プロセスビルダーを使った開発
SalesforceのプロセスビルダーとRayBarcodeを使うと、プログラミングせずにバーコードの読み取りアプリケーションを開発できます。この方法では、RayBarcode Readerモバイルアプリケーションからの読み取り結果がSalesforceに格納され、プロセスビルダーで任意のアクションを実行できます。
重要:以下の手順にはSalesforce組織の設定変更が含まれます。本番環境に適用する前に、まずはDeveloper EditionやSandboxで試してください。
前提
次の知識が必要です。
- プロセスビルダーの使い方
- カスタムメタデータ型へのレコードの追加
- カスタムオブジェクトに格納されたレコードの取り出し
参照:
プロセスビルダーを使った読み取り操作の流れ
- ユーザーがスマートフォンのホーム画面から、Salesforceモバイルアプリケーションを起動する。
- SalesforceモバイルアプリケーションにSalesforceのログイン画面が表示される。
- Salesforceのメニューから「GcBarcode Scanner」をタップする。
- バーコードの読み取り開始画面の読み取りボタンをタップする。
- RayBarcode Readerモバイルアプリケーションが起動され、バーコード読み取り用のカメラ画面が表示される。
- カメラ画面を通してバーコードを読み取る。
- システム管理者が事前にカスタムメタデータ型「BarcodeScanProcessRule」のルールで処理を定義できる。カスタムメタデータ型のルールに一致しないとき、レコードIDとして処理される。
- カスタムオブジェクト「BarcodeScanResult」に読み取り結果のレコードが追加される。
- システム管理者が事前にプロセスビルダーで「BarcodeScanResult」に追加されたレコードの処理方法を定義できる。
- 「GcBarcode Scanner」アプリが「BarcodeScanResult」の「JumpToRecordId」カスタム項目に格納されたIDのレコードを表示する。
この流れをより詳細に表したものが次の図になります。
sequenceDiagram
participant ユーザー
participant Salesforceアプリ
participant RayBarcode Readerアプリ
participant Salesforce
ユーザー->>Salesforceアプリ: スマートフォンでアプリを起動
Salesforceアプリ->>ユーザー: Salesforceログイン画面を表示
ユーザー->>Salesforceアプリ: Salesforceにログイン
Salesforceアプリ->>ユーザー: Salesforceのホーム画面を表示
ユーザー->>Salesforceアプリ: Salesforce上の「GcBarcode Scanner」を選択
Salesforceアプリ->>ユーザー: バーコードの読み取り開始画面を表示
ユーザー->>Salesforceアプリ: 画面上の読み取りボタンをタップ
Salesforceアプリ->>RayBarcode Readerアプリ: RayBarcode Readerアプリを起動
RayBarcode Readerアプリ->>ユーザー: Salesforceログイン画面を表示 ※1
ユーザー->>RayBarcode Readerアプリ: RayBarcode Readerにログイン
RayBarcode Readerアプリ->>ユーザー: カメラ画面を表示
ユーザー->>RayBarcode Readerアプリ: バーコードを読み取る
RayBarcode Readerアプリ->>Salesforce: 読み取ったデータをSalesforceに渡す
Salesforce-->RayBarcode Readerアプリ: 読み取ったデータをルールで判定
Salesforce-->RayBarcode Readerアプリ: 読み取ったデータをレコードに保存
Salesforce-->RayBarcode Readerアプリ: プロセスビルダーでレコードを処理
Salesforce->>Salesforceアプリ: 「JumpToRecordId」のレコードを表示
※1 RayBarcode Readerモバイルアプリケーションにユーザーがログインしていなかった場合のみ、Salesforceログイン画面が表示されます。
動作確認
動作確認の前に、以下の2つのステップが必要となります。
- Salesforceのナビゲーションメニューに「GCBarcode Scanner」を表示する
- 読み取るQRコードを作成する
まず、次の手順に従いSalesforceのナビゲーションメニューに「GCBarcode Scanner」を追加します。
Salesforce Classicの場合:
- 「設定 > 管理 > モバイル管理 > Salesforce ナビゲーション」を開く。
- 「選択可能」リストから「GCBarcode Scanner」を見つける。
- 右向きの三角形アイコンをクリックして、「GCBarcode Scanner」を「選択済み」に移動する。
- 「選択済み」リストで上向きの三角形アイコンをクリックして「GCBarcode Scanner」を一番上に移動する。
- 「保存」をクリックする。
Lightning Experienceの場合:
- 歯車アイコンをクリックした後、「設定 > プラットフォームツール > アプリケーション > モバイルアプリケーション > Salesforce > Salesforce ナビゲーション」を開く。
- 「選択可能」リストから「GCBarcode Scanner」を見つける。
- 右向きの三角形アイコンをクリックして、「GCBarcode Scanner」を「選択済み」に移動する。
- 「選択済み」リストで上向きの三角形アイコンをクリックして「GCBarcode Scanner」を一番上に移動する。
- 「保存」をクリックする。
Salesforceのナビゲーションメニューに「GCBarcode Scanner」を追加した後、サンプルページを使って「取引先」の任意のレコードのIDからQRコードを作成します。適当な取引先レコードを1件開き、ブラウザーのアドレスバーからレコードIDをコピーします。
Salesforce Classicの場合:
https://[YOUR INSTANCE or CUSTOM DOMAIN].my.Salesforce.com/[レコードID]
Lightning Experienceの場合:
https://[YOUR INSTANCE or CUSTOM DOMAIN].lightning.force.com/one/one.app?source=aloha#/sObject/[レコードID]/view
次にブラウザーで新しいタブを開き、次のURLのバーコード生成サンプルページを開きます。
https://[YOUR INSTANCE or CUSTOM DOMAIN].lightning.force.com/gcbc/GcBarcodeDemoPage.app
「Value」欄に、先ほどコピーしたレコードIDを貼り付けます。ページの他の入力項目をクリックし、QRコードが更新されることを確認します。
注意:レコードIDは一意なのでお使いの組織では上記のサンプル画面とは異なる値になります。
上記の2つのステップを実行することでQRコードを読み取る準備ができました。 続きまして、動作を確認します。「GCBarcode Scanner」でQRコードの読み取りを行ってください。読み取りが成功すると、次のようにSalesforceモバイルアプリケーションに読み取ったIDを持つレコードのページが表示されます。
読み取ったレコードIDはgcbc名前空間プレフィックスの「BarcodeScanResult」というカスタムオブジェクトのレコードとして保存されます。
使用例1. レコードIDを読み取って値を更新する
レコードIDを含むバーコードを読み取った結果は、gcbc名前空間プレフィックスの「BarcodeScanResult」というカスタムオブジェクトのレコードとして保存されます。Salesforceのプロセスビルダーを使うと、「BarcodeScanResult」にレコードが追加されたタイミングで任意のプロセスを実行できます。「BarcodeScanResult」についてはリファレンスを参照してください。
プロセスビルダーでは、次の手順で読み取ったバーコードに関連するレコードを処理できます。
- プロセスビルダーの条件でSObjectTypeName項目を使ってオブジェクトごとに処理を振り分ける。
- 組み込みのApexクラスを使ってオブジェクトの項目の値を更新する。
ここでは、先に読み取った取引先のレコードIDから、取引先の名前を取り出してプロセスビルダーで処理する手順を紹介します。
- Salesforce Classicの場合、「設定 > ビルド > 作成 > ワークフローと承認申請 > プロセスビルダー」を開く。Lightning Experienceの場合、歯車アイコンをクリックした後、「設定 > プロセスの自動化 > プロセスビルダー」を開く。
- 次の「プロセスビルダー」画面が表示されることを確認する。
- 「新規」ボタンをクリックして、新しいプロセスを作成する。
- プロセス名:任意
- API参照名:任意
- プロセスを開始するタイミング:レコードが変更されるとき
- 「Save」ボタンをクリックし、次の画面が表示されることを確認する。
- 「オブジェクト」をクリックし、処理対象のオブジェクトを選択する。
- 「オブジェクト」に「BarcodeScanResult」、「プロセスを開始」に「レコードを作成したときのみ」を選び、「保存」をクリックする。
- 「条件を追加」をクリックする。
- 「条件名」に任意の名前を記入し、「項目を検索」をクリックする。
- 「SObjectTypeName」をクリックし、「Choose」ボタンをクリックする。
- 「値」に取引先のAPI名「Account」を記入して「保存」をクリックする。
参照:以下はSalesforceの代表的な標準オブジェクトとそのAPI参照名です。プロセスに条件を複数追加し、オブジェクトごとに処理を分けることもできます。
オブジェクト名 |
API参照名 |
取引先 |
Account |
取引先責任者 |
Contact |
リード |
Lead |
ケース |
Case |
商談 |
Opportunity |
キャンペーンメンバー |
CampaignMember |
続けて、オブジェクトのレコードに対する処理をアクションで定義します。ここでは、例として取引先の説明に「バーコードを読み取りました。」というメッセージを書き込みます。
- 「アクションを追加」をクリックする。
- 「アクション種別」に「Apex」、「アクション名」に任意の名前、「Apexクラス」に「Update SObject Field Value」を選択する。
- 「Apex変数を設定」の「sObjectId」の行で「種別」に「数式」を選択する。注意:「種別」に「文字列」や「項目の参照」を設定しても動作しません。
- 「数式を構築」をクリックし、「[gcbc__BarcodeScanResult__c].gcbc__ScannedSObjectId__c」を入力する。
- 「Use this Formula」ボタンをクリックする。
- 「fieldName」に「Description」、「fieldValue」に「バーコードを読み取りました。」という文字列をそれぞれ記入し、「保存」をクリックする。
- 「有効化」をクリックしてプロセスを有効化する。
以上でプロセスビルダーによる設定は完了です。さきほどの取引先のレコードのQRコードをもう一度読み取ると、「取引先」の「説明」が更新されます。
使用例2. 独自のIDを読み取る
レコードIDではなく、書籍コードや単純な連番をバーコード化し、これを読み取って作業を効率化したい場合があります。そのような場合は、カスタムメタデータ型に読み取り結果の一致ルールを定義し、一致ルールに基づいてBarcodeScanResultにデータを格納できます。
たとえば商品マスタをカスタムオブジェクトに定義し、商品コードと商品価格の情報がそのカスタムオブジェクトに格納されていると仮定します。商品コードをQRコードにして配布し、その後スマートフォンでQRコードを読み取り、読み取った結果をもとに「BarcodeScanResult」に価格を取り出すことができます。その後、商品コードと価格のデータをSalesforceのプロセスビルダーで加工できます。
注意:読み取ったバーコードに該当する商品コードが存在しないとき、GCBarcode Scannerは代わりにレコードIDを探します。一致するレコードIDがあるとき、処理されます。もし、商品コードとレコードIDが完全に一致する場合、商品コードとして先に処理されます。同じ商品コードが複数存在する場合、最新のレコードに一致します。
以下の手順で、カスタムメタデータ型のレコードを使って一致ルールを定義します。カスタムメタデータ型は「開発」や「カスタムコード」のセクションにありますが、ここではコーディングは必要ありません。
Salesforce Classicの場合:
- 「設定 > ビルド > 開発 > カスタムメタデータ型」を開く。
- 「gcbc」名前空間プレフィックスの「BarcodeScanProcessRule」カスタムメタデータ型で「レコードの管理」をクリックする。
- 「新規」ボタンをクリックする。
- 以下を追加し、「保存」ボタンをクリックする。
- 表示ラベルに任意のテキスト
- BarcodeScanProcessRule名に任意のAPI名。半角英数文字のみ使用できる。
- BarcodeValueMappingに「オブジェクト名.項目名」で一致対象のオブジェクトと項目を指定。ピリオドは半角。それぞれAPI名で指定する。
- CheckBoxFieldName~LongTextFieldName。BarcodeValueMappingに指定した項目の値を、「BarcodeScanResult」に複製して保存するときの「BarcodeScan」の項目名。
Lightning Experienceの場合:
- 歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > カスタムメタデータ型」を開く。
- 「gcbc」名前空間プレフィックスの「BarcodeScanProcessRule」カスタムメタデータ型で「レコードの管理」をクリックする。
- 「新規」ボタンをクリックして以下を追加する。
- 表示ラベルに任意のテキスト
- BarcodeScanProcessRule名に任意のAPI名。半角英数文字のみ使用できる。
- BarcodeValueMappingに「オブジェクト名.項目名」で一致対象のオブジェクトと項目を指定。ピリオドは半角。それぞれAPI名で指定する。
- CheckBoxFieldName~LongTextFieldName。BarcodeValueMappingに指定した項目の値を、「BarcodeScanResult」に複製して保存するときの「BarcodeScan」の項目名。
BarcodeScanProcessRuleカスタムメタデータ型についてはリファレンスを参照してください。
BarcodeScanResultカスタムオブジェクトの各項目に取り出された値は、「使用例1. レコードIDを読み取って値を更新する」の手順によってプロセスビルダーで処理できます。
プロセスビルダーを使う場合の制限
次の操作はプロセスビルダーを使った読み取りアプリケーショでは対応していません。
- プロセスビルダーを使った読み取りでは、常に1回ごとの読み取りになります。
- スマートフォンのフロントカメラ(インカメラ)は使用できません。常にバックカメラを使用します。
- 読み取り対象バーコード指定することはできません。プロセスビルダーを使った読み取りでは、RayBarcodeが対応するすべてのバーコードが検出されます。
- 読み取り開始ボタンのカスタマイズ。読み取り開始ボタンの大きさ、色、キャプションは変更できません。
- プロセスビルダーでオブジェクトごとに有効なルールおよび有効なプロセスの合計数は、Salesforce Spring’18リリースの時点で50個です。このほかに、組織全体でフローおよびプロセスの合計数の上限があるので注意してください。参照:プロセスの制限
- レコードIDを読み取り後にレコードのページが表示される動作は変更できません。
- 読み取ったバーコードの値をスマートフォンの画面上に表示できません。
読み取り結果を消去する方法
バーコードの読み取り結果は「BarcodeScanResult」カスタムオブジェクトに蓄積されます。次の操作を行うと、昨日より古い読み取り結果を削除できます。
Salesforce Classicの場合:
- 「設定 > ビルド > 開発 > Apexクラス」を開く。
- 「Apex をスケジュール」をクリックし、「BarcodeScanResultCleaner」Apexをスケジュールで実行する。
Lightning Experienceの場合:
- 歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > Apexクラス」を開く。
- 「Apex をスケジュール」をクリックし、「BarcodeScanResultCleaner」Apexをスケジュールで実行する。
Copyright © 2024 MESCIUS inc. All rights reserved.