プロセスビルダーを使った開発

SalesforceのプロセスビルダーとRayBarcodeを使うと、Apexでプログラミングせずにバーコードの読み取りアプリを開発できます。この方法では、RayBarcode Readerアプリからの読み取り結果がSalesforceに格納され、プロセスビルダーで任意のアクションを実行できます。

重要:以下の手順にはSalesforce組織の設定変更が含まれます。本番環境に適用する前に、まずはDeveloper EditionやSandboxで試してください。

前提

次の知識が必要です。

  • Salesforceのプロセスビルダーの使い方
  • カスタムメタデータ型へのレコードの追加
  • カスタムオブジェクトに格納されたレコードの取り出し

参照:

プロセスビルダーのための読み取り画面はLightning Componentとして提供されているため、利用する環境ではSalesforceの「私のドメイン」を有効にする必要があります。

「私のドメイン」が有効になっていない場合、次の手順に沿って有効化してください。

「私のドメイン」を有効化できない場合、次のページを参照してVisualforceベースの読み取り画面を作成しプロセスビルダーを使用してください。

なお、「私のドメイン」を有効化する前にRayBarcodeをSalesforceにインストールしていると、後述の「GCBarcode Scanner」が表示されません。この場合は、次の手順を実行します。

Salesforce Classicの場合:

  1. 「設定 > 管理 > ユーザの管理 > プロファイル」を開く。
  2. 使用しているユーザのプロファイル名をクリックし、「プロファイルの概要」を開く。
  3. 「アプリケーション」セクションにある「オブジェクト設定」をクリックする。
  4. 「すべてのオブジェクト設定」の一覧で「GCBarcode Scanner」をクリックする。
  5. 「タブの設定」が「タブを隠す」または「デフォルトで非表示」になっている場合、「編集」をクリックして「デフォルトで表示」に変更し保存する。

Lightning Experienceの場合:

  1. 歯車アイコンをクリックした後、「設定 > 管理 > ユーザ > プロファイル」を開く。
  2. 使用しているユーザのプロファイル名をクリックし、「プロファイルの概要」を開く。
  3. 「アプリケーション」セクションにある「オブジェクト設定」をクリックする。
  4. 「すべてのオブジェクト設定」の一覧で「GCBarcode Scanner」をクリックする。
  5. 「タブの設定」が「タブを隠す」または「デフォルトで非表示」になっている場合、「編集」をクリックして「デフォルトで表示」に変更し保存する。

または、RayBarcodeをアンインストールした後、再度インストールします。

プロセスビルダーを使った読み取り操作の流れ

  1. ユーザがスマートフォンのホーム画面から、Salesforceアプリを起動する。
  2. SalesforceアプリにSalesforceのログイン画面が表示される。
  3. Salesforceのメニューから「GcBarcode Scanner」をタップする。
  4. バーコードの読み取り開始画面の読み取りボタンをタップする。
  5. 「RayBarcode Reader」アプリが起動され、バーコード読み取り用のカメラ画面が表示される。
  6. カメラ画面を通してバーコードを読み取る。
  7. システム管理者が事前にカスタムメタデータ型「BarcodeScanProcessRule」のルールで処理を定義できる。カスタムメタデータ型のルールに一致しないとき、レコードIDとして処理される。
  8. カスタムオブジェクト「BarcodeScanResult」に読み取り結果のレコードが追加される。
  9. システム管理者が事前にプロセスビルダーで「BarcodeScanResult」に追加されたレコードの処理方法を定義できる。
  10. 「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の場合:

  1. 「設定 > 管理 > モバイル管理 > Salesforce ナビゲーション」を開く。
  2. 「選択可能」リストから「GCBarcode Scanner」を見つける。
  3. 右向きの三角形アイコンをクリックして、「GCBarcode Scanner」を「選択済み」に移動する。
  4. 「選択済み」リストで上向きの三角形アイコンをクリックして「GCBarcode Scanner」を一番上に移動する。
  5. 「保存」をクリックする。

Lightning Experienceの場合:

  1. 歯車アイコンをクリックした後、「設定 > プラットフォームツール > アプリケーション > モバイルアプリケーション > Salesforce > Salesforce ナビゲーション」を開く。
  2. 「選択可能」リストから「GCBarcode Scanner」を見つける。
  3. 右向きの三角形アイコンをクリックして、「GCBarcode Scanner」を「選択済み」に移動する。
  4. 「選択済み」リストで上向きの三角形アイコンをクリックして「GCBarcode Scanner」を一番上に移動する。
  5. 「保存」をクリックする。

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」についてはリファレンスを参照してください。

プロセスビルダーでは、次の手順で読み取ったバーコードに関連するレコードを処理できます。なお、Salesforceの表示言語に日本語を選択していても、プロセスビルダーの一部の操作画面は英語になります。

  1. プロセスビルダーの条件でSObjectTypeName項目を使ってオブジェクトごとに処理を振り分ける。
  2. 組み込みのApexクラスを使ってオブジェクトの項目の値を更新する。

ここでは、先に読み取った取引先のレコードIDから、取引先の名前を取り出してプロセスビルダーで処理する手順を紹介します。

  1. Salesforce Classicの場合、「設定 > ビルド > 作成 > ワークフローと承認申請 > プロセスビルダー」を開く。Lightning Experienceの場合、歯車アイコンをクリックした後、「設定 > プロセスの自動化 > プロセスビルダー」を開く。
  2. 次の「プロセスビルダー」画面が表示されることを確認する。
  3. 「新規」ボタンをクリックして、新しいプロセスを作成する。
    • プロセス名:任意
    • API参照名:任意
    • プロセスを開始するタイミング:レコードが変更されるとき
  4. 「Save」ボタンをクリックし、次の画面が表示されることを確認する。
  5. 「オブジェクト」をクリックし、処理対象のオブジェクトを選択する。
  6. 「オブジェクト」に「BarcodeScanResult」、「プロセスを開始」に「レコードを作成したときのみ」を選び、「保存」をクリックする。
  7. 「条件を追加」をクリックする。
  8. 「条件名」に任意の名前を記入し、「項目を検索」をクリックする。
  9. 「SObjectTypeName」をクリックし、「Choose」ボタンをクリックする。
  10. 「値」に取引先のAPI名「Account」を記入して「保存」をクリックする。

参照:以下はSalesforceの代表的な標準オブジェクトとそのAPI参照名です。プロセスに条件を複数追加し、オブジェクトごとに処理を分けることもできます。

オブジェクト名 API参照名
取引先 Account
取引先責任者 Contact
リード Lead
ケース Case
商談 Opportunity
キャンペーンメンバー CampaignMember

続けて、オブジェクトのレコードに対する処理をアクションで定義します。ここでは、例として取引先の説明に「バーコードを読み取りました。」というメッセージを書き込みます。

  1. 「アクションを追加」をクリックする。
  2. 「アクション種別」に「Apex」、「アクション名」に任意の名前、「Apexクラス」に「Update SObject Field Value」を選択する。
  3. 「Apex変数を設定」の「sObjectId」の行で「種別」に「数式」を選択する。注意:「種別」に「文字列」や「項目の参照」を設定しても動作しません。
  4. 「数式を構築」をクリックし、[gcbc__BarcodeScanResult__c].gcbc__ScannedSObjectId__cを入力する。
  5. 「Use this Formula」ボタンをクリックする。
  6. 「fieldName」に「Description」、「fieldValue」に「バーコードを読み取りました。」という文字列をそれぞれ記入し、「保存」をクリックする。
  7. 「有効化」をクリックしてプロセスを有効化する。

以上でプロセスビルダーによる設定は完了です。さきほどの取引先のレコードのQRコードをもう一度読み取ると、「取引先」の「説明」が更新されます。

使用例2. 独自のIDを読み取る

レコードIDではなく、書籍コードや単純な連番をバーコード化し、これを読み取って作業を効率化したい場合があります。そのような場合は、カスタムメタデータ型に読み取り結果の一致ルールを定義し、一致ルールに基づいてBarcodeScanResultにデータを格納できます。

たとえば商品マスタをカスタムオブジェクトに定義し、商品コードと商品価格の情報がそのカスタムオブジェクトに格納されていると仮定します。商品コードをQRコードにして配布し、その後スマートフォンでQRコードを読み取り、読み取った結果をもとに「BarcodeScanResult」に価格を取り出すことができます。その後、商品コードと価格のデータをSalesforceのプロセスビルダーで加工できます。

注意:読み取ったバーコードに該当する商品コードが存在しないとき、GCBarcode Scannerは代わりにレコードIDを探します。一致するレコードIDがあるとき、処理されます。もし、商品コードとレコードIDが完全に一致する場合、商品コードとして先に処理されます。同じ商品コードが複数存在する場合、最新のレコードに一致します。

以下の手順で、カスタムメタデータ型のレコードを使って一致ルールを定義します。カスタムメタデータ型は「開発」や「カスタムコード」のセクションにありますが、ここではコーディングは必要ありません。

Salesforce Classicの場合:

  1. 「設定 > ビルド > 開発 > カスタムメタデータ型」を開く。
  2. 「gcbc」名前空間プレフィックスの「BarcodeScanProcessRule」カスタムメタデータ型で「レコードの管理」をクリックする。
  3. 「新規」ボタンをクリックする。
  4. 以下を追加し、「保存」ボタンをクリックする。
    • 表示ラベルに任意のテキスト
    • BarcodeScanProcessRule名に任意のAPI名。半角英数文字のみ使用できる。
    • BarcodeValueMappingに「オブジェクト名.項目名」で一致対象のオブジェクトと項目を指定。ピリオドは半角。それぞれAPI名で指定する。
    • CheckBoxFieldName~LongTextFieldName。BarcodeValueMappingに指定した項目の値を、「BarcodeScanResult」に複製して保存するときの「BarcodeScan」の項目名。

Lightning Experienceの場合:

  1. 歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > カスタムメタデータ型」を開く。
  2. 「gcbc」名前空間プレフィックスの「BarcodeScanProcessRule」カスタムメタデータ型で「レコードの管理」をクリックする。
  3. 「新規」ボタンをクリックして以下を追加する。
    • 表示ラベルに任意のテキスト
    • BarcodeScanProcessRule名に任意のAPI名。半角英数文字のみ使用できる。
    • BarcodeValueMappingに「オブジェクト名.項目名」で一致対象のオブジェクトと項目を指定。ピリオドは半角。それぞれAPI名で指定する。
    • CheckBoxFieldName~LongTextFieldName。BarcodeValueMappingに指定した項目の値を、「BarcodeScanResult」に複製して保存するときの「BarcodeScan」の項目名。

BarcodeScanProcessRuleカスタムメタデータ型についてはリファレンスを参照してください。

BarcodeScanResultカスタムオブジェクトの各項目に取り出された値は、「使用例1. レコードIDを読み取って値を更新する」の手順によってプロセスビルダーで処理できます。

プロセスビルダーを使う場合の制限

次の操作はプロセスビルダーを使った読み取りアプリでは対応していません。代わりにVisualforceページの開発Lightningアプリケーションの開発を検討してください。

  • 連続読み取りの操作。プロセスビルダーを使った読み取りでは、常に1回ごとの読み取りになります。
  • スマートフォンのフロントカメラ(インカメラ)の使用。プロセスビルダーを使った読み取りでは、常にバックカメラを使用します。
  • 読み取り対象バーコードの指定。プロセスビルダーを使った読み取りでは、RayBarcodeが対応するすべてのバーコードが検出されます。
  • 読み取り開始ボタンのカスタマイズ。読み取り開始ボタンの大きさ、色、キャプションは変更できません。
  • プロセスビルダーでオブジェクトごとに有効なルールおよび有効なプロセスの合計数は、Salesforce Spring’18リリースの時点で50個です。このほかに、組織全体でフローおよびプロセスの合計数の上限があるので注意してください。参照:プロセスの制限
  • レコードIDを読み取り後にレコードのページが表示される動作は変更できません。
  • 読み取ったバーコードの値をスマートフォンの画面上に表示できません。

読み取り結果を消去する方法

バーコードの読み取り結果は「BarcodeScanResult」カスタムオブジェクトに蓄積されます。次の操作を行うと、昨日より古い読み取り結果を削除できます。

Salesforce Classicの場合:

  1. 「設定 > ビルド > 開発 > Apexクラス」を開く。
  2. 「Apex をスケジュール」をクリックし、「BarcodeScanResultCleaner」Apexをスケジュールで実行する。

Lightning Experienceの場合:

  1. 歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > Apexクラス」を開く。
  2. 「Apex をスケジュール」をクリックし、「BarcodeScanResultCleaner」Apexをスケジュールで実行する。
Copyright © 2020 GrapeCity inc. All rights reserved.