フローを使った開発

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

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

前提

次の知識が必要です。

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

参照:

フローを使った読み取り操作の流れ

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

フローでは、次の手順で読み取ったバーコードに関連するレコードを処理できます。

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

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

  1. Salesforce Classicの場合、「設定 > ビルド > 作成 > ワークフローと承認申請 > フロー」を開く。Lightning Experienceの場合、歯車アイコンをクリックした後、「設定 > プロセスの自動化 > フロー」を開く。
  2. 「新規」ボタンをクリックし、「レコードトリガーフロー」を選択して新しいフローを作成する。
  3. 「開始を設定」で条件を設定する。
    • オブジェクトを選択:BarcodeScanResult
    • フローをトリガーする条件:レコードが作成された
    • エントリ条件を設定:
      • 項目:gcbc__SObjectTypeName__c
      • 演算子:次の文字列と一致する
      • 値:Account
  4. フローにアクション要素を追加する。
  5. Apexアクションでアクションを選択し、入力値を設定する。
    • アクション:Update SObject Field Value
    • 表示ラベル:任意
    • API参照名:任意
    • fieldName:Description
    • fieldValue:バーコードを読み取りフローと連携しました。
    • sObjectId:{!$Record.gcbc__ScannedSObjectId__c}
  6. フローを保存し、有効化を行う。

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

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

以上でフローによる設定は完了です。さきほどの取引先のレコードの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を読み取って値を更新する」の手順によってフローで処理できます。

フローを使う場合の制限

次の操作はフローを使った読み取りアプリケーショでは対応していません。

  • フローを使った読み取りでは、常に1回ごとの読み取りになります。
  • スマートフォンのフロントカメラ(インカメラ)は使用できません。常にバックカメラを使用します。
  • 読み取り対象バーコード指定することはできません。フローを使った読み取りでは、RayBarcodeが対応するすべてのバーコードが検出されます。
  • 読み取り開始ボタンのカスタマイズ。読み取り開始ボタンの大きさ、色、キャプションは変更できません。
  • レコードIDを読み取り後にレコードのページが表示される動作は変更できません。
  • 読み取ったバーコードの値をスマートフォンの画面上に表示できません。

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

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

Salesforce Classicの場合:

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

Lightning Experienceの場合:

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