Salesforceのプロセスビルダーを使うと、ノーコード、つまりApexでプログラミングせずにバーコードの読み取りアプリを開発できます。この方法では「GC Barcode」アプリからの読み取り結果がSalesforceに格納され、プロセスビルダーで任意のアクションを実行できます。この機能はv3の新機能です。
重要:以下の手順にはSalesforce組織の設定変更があります。本番環境で試す前に、まずはDeveloper EditionやSandboxで試してください。
次の知識が必要です。
参照:
プロセスビルダーのための読み取り画面はLightning Componentとして提供されているため、利用する環境ではSalesforceの「私のドメイン」をリリースする必要があります。
「私のドメイン」が有効になっていない場合、次の手順に沿って有効化してください。
「私のドメイン」を有効化できない場合、将来のVisualforceベースの読み取り画面の提供をお待ちください。
ユーザーによるスマートフォンを使った読み取り操作と、システム管理者による読み取り処理のカスタマイズは次の流れで使用できます。
まず、プロセスビルダーのためのアプリをスマートフォンの「GCBarcodeアプリ」から表示できるようにします。
次の手順でSalesforceのナビゲーションメニューに「GCBarcode Scanner」Lightningアプリを追加します。
Salesforce Classicの場合:
Lightning Experienceの場合:
動作を確認します。
まず、サンプルページを使って「取引先」の任意のレコードの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は一意なのでお使いの組織では上記のサンプル画面とは異なる値になります。
次の手順で、このページに表示されているQRコードを読み取れるか確認してください。
読取が成功すると、次のようにスマーフォンのアプリで読み取ったIDを持つレコードのページが「GC Barcode」アプリに表示されます。
読み取ったレコードIDはgcbc名前空間プレフィックスの「BarcodeScanResult」というカスタムオブジェクトのレコードとして保存されます。
レコードIDを含むバーコードを読み取った結果は、gcbc名前空間プレフィックスの「BarcodeScanResult」というカスタムオブジェクトのレコードとして保存されます。Salesforceのプロセスビルダーを使うと、「BarcodeScanResult」にレコードが追加されたタイミングで任意のプロセスを実行できます。
「BarcodeScanResult」には次の情報が保存されるので、これらを手掛かりにプロセスビルダーでさらにレコードから情報を取り出して処理することができます。
項目の表示ラベル | API参照名 | データ型 | 説明 |
---|---|---|---|
CheckBoxField | gcbc__CheckBoxField__c | チェックボックス | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
CurrencyField | gcbc__CurrencyField__c | 通貨(18、0) | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
DateField | gcbc__DateField__c | 日付 | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
DateTimeField | gcbc__DateTimeField__c | 日付/時間 | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
JumpToRecordId | gcbc__JumpToRecordId__c | テキスト(18) | 移動先のレコードID。 |
LongTextField | gcbc__LongTextField__c | ロングテキストエリア(32768) | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
Name | Name | テキスト(80) | レコード名(レコードID)。 |
NumberField | gcbc__NumberField__c | 数値(18、0) | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
PercentField | gcbc__PercentField__c | パーセント(18、0) | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
ScannedSObjectId | gcbc__ScannedSObjectId__c | テキスト(18) | レコードが属するオブジェクトのID。 |
SObjectTypeName | gcbc__SObjectTypeName__c | テキスト(80) | コードが属するオブジェクトのAPI参照名。 |
TextField1 | gcbc__TextField1__c | テキスト(255) | レコードの名前。または、BarcodeScanProcessRule(後述)によって値が保存される項目。 |
TextField2 | gcbc__TextField2__c | テキスト(255) | BarcodeScanProcessRule(後述)によって値が保存される項目。 |
Value | gcbc__Value__c | テキストエリア(255) | 読み取ったバーコードの値。 |
作成者 | CreatedById | 参照関係(ユーザー) | レコードを作成したユーザー。 |
所有者 | OwnerId | 参照関係(ユーザー,グループ) | レコードを所有しているユーザーまたはグループ。 |
最終更新者 | LastModifiedById | 参照関係(ユーザー) | レコードを最後に更新したユーザー。 |
プロセスビルダーでは、次の手順で読み取ったバーコードに関連するレコードを処理できます。なお、Salesforceの表示言語に日本語を選択していても、プロセスビルダーの一部の操作画面は英語になります。
ここでは、先に読み取った取引先のレコードIDから、取引先の名前を取り出してプロセスビルダーで処理する手順を紹介します。
参照:以下はSalesforceの代表的な標準オブジェクトとそのAPI参照名です。プロセスに条件を複数追加し、オブジェクトごとに処理を分けることもできます。
オブジェクト名 | API参照名 |
---|---|
取引先 | Account |
取引先責任者 | Contact |
リード | Lead |
ケース | Case |
商談 | Opportunity |
キャンペーンメンバー | CampaignMember |
続けて、オブジェクトのレコードに対する処理をアクションで定義します。ここでは、例として取引先の説明に「バーコードを読み取りました。」というメッセージを書き込みます。
[gcbc__BarcodeScanResult__c].gcbc__ScannedSObjectId__c
を入力する。以上でプロセスビルダーによる設定は完了です。さきほどの取引先のレコードのQRコードをもう一度読み取ると、「取引先」の「説明」が更新されます。
レコードIDではなく、書籍コードや単純な連番をバーコード化し、これを読み取って作業を効率化したい場合があります。そのような場合は、カスタムメタデータ型に読み取り結果の一致ルールを定義し、一致ルールに基づいてBarcodeScanResultにデータを格納できます。
たとえば商品マスタをカスタムオブジェクトに定義し、商品コードと商品価格の情報がそのカスタムオブジェクトに格納されていると仮定します。商品コードをQRコードにして配布し、その後スマートフォンでQRコードを読み取り、読み取って結果をもとに「BarcodeScanResult」に価格を取り出すことができます。その後、商品コードと価格のデータをSalesforceのプロセスビルダーで加工できます。
注意:読み取ったバーコードに該当する商品コードが存在しないとき、GCBarcode Scannerは代わりにレコードIDを探します。一致するレコードIDがあるとき、処理されます。もし、商品コードとレコードIDが完全に一致する場合、商品コードとして先に処理されます。同じ商品コードが複数存在する場合、最新のレコードに一致します。
以下の手順で、カスタムメタデータ型のレコードを使って一致ルールを定義します。カスタムメタデータ型は「開発」や「カスタムコード」のセクションにありますが、ここではコーディングは必要ありません。
Salesforce Classicの場合:
Lightning Experienceの場合:
BarcodeScanProcessRuleカスタムメタデータ型には、次のカスタム項目があります。データ型はすべて「テキスト(255)」です。
項目の表示ラベル | 説明 |
---|---|
BarcodeValueMapping | 読み取ったバーコードの値を検索するオブジェクト名と項目名を「オブジェクト名.項目名」の形式で指定します。 |
CheckBoxFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__CheckBoxField__c に取り出す項目名を指定します。 |
CurrencyFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__CurrencyField__c に取り出す項目名を指定します。 |
DateFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__DateField__c に取り出す項目名を指定します。 |
DateTimeFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__DateTimeField__c に取り出す項目名を指定します。 |
NumberFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__NumberField__c に取り出す項目名を指定します。 |
PercentFieldName | BarcodeValueMappingに指定したオブジェクトから、gcbc__PercentField__c に取り出す項目名を指定します。 |
TextFieldName1 | BarcodeValueMappingに指定したオブジェクトから、gcbc__TextField1__c に取り出す項目名を指定します。 |
TextFieldName2 | BarcodeValueMappingに指定したオブジェクトから、gcbc__TextField2__c に取り出す項目名を指定します。 |
TimeFieldName | この項目は将来の時刻型のサポートのための予約されています。 |
BarcodeScanResultカスタムオブジェクトの各項目に取り出された値は、「使用例1. レコードIDを読み取って値を更新する」の手順によってプロセスビルダーで処理できます。
次の操作はプロセスビルダーを使った読み取りアプリでは対応していません。代わりにVisualforceページの開発やLightningアプリケーションの開発を検討してください。
バーコードの読み取り結果は「BarcodeScanResult」カスタムオブジェクトに蓄積されます。次の操作を行うと、昨日より古い読み取り結果を削除できます。
Salesforce Classicの場合:
Lightning Experienceの場合: