2024.01.18

もうプログラマーは不要? Integration Procedureを使ってみた

Just a moment... (30814)

はじめに

Salesforceに「OmniStudio」という機能があることをご存じですか?
OmniStudioについては、これまでフロント側のFlex CardやOmniScriptについての機能に注目が集まることが多くありました。
今回はバックエンドの処理として、Integration Procedureについて説明をしていきたいと思います。
OmniStudioが持つデータ処理機能はそれだけでも強力ですが、Integration Procedureではシンプルな処理(DataRaptorやApex処理など)を組み合わせ複雑な処理を実現することも可能です。

ノーコード・ローコードという流れの中で、一つの選択肢となってくることと考えています。

Integaration Procedureとは

Salesforceや外部システムのデータの読み取りや書き込みに使用します。

Integration ProcedureはOmniScriptやFlexCardなどのOmniStudioコンポーネント、API、さらには Apex メソッドからもコールできます。

OmniStudio Integration Procedure は、1 回のサーバコールで複数のアクションを実行する宣言型のサーバ側プロセスとなります。

写真提供:OmniStudio Integration Procedure を使い始める 単元 | Salesforce Trailhead

サンプル

概要

今回はIntegrationProcedureを使ったサンプルを作成してみました。
概要は以下の通りです。

・画面から入力した郵便番号を元に請求先住所の郵便番号が一致する取引先レコードを検索し一覧表示する。
・郵便番号を元にAPIから取得した住所と取引先の請求先住所が異なる場合、住所有効性のチェックを外す。

画面デモ

取引先テストデータ

取引先のテストデータはこのように入っています。

画面初期表示

郵便番号を入力して、「検索」ボタンを押下すると次のように結果が返ってきます。

検索ボタン押下後の画面

Salesforceに登録された取引先レコードの住所と郵便番号を比較して、有効な住所かどうかの結果が表示されます。

実装内容

どのような実装内容となっているのかを確認してみましょう!

OmniScriptの構成

OmniScript上の赤枠の検索ボタンがIntegrationProcedureで構成されています。

IntegrationProcedureの構成

IntegrationProcedureの中身はこのように構成されています。 赤枠処理の内容は次で説明いたします。
個々のストラクチャーの中身は以下のような処理になっています。
(今回はOmniStudioに関して初級レベルの知識があることを前提として、ポイントとなる箇所だけ細かく記載します。)

DRExtract_getAccount
DataRaptor ExtractでSalesforceに登録された取引先の一覧を表示する。

HttpAction_AddressApi
HTTPActionで画面に入力された郵便番号から外部の住所APIで住所を取得する。

RemoteAction
予め作成しておいたApexクラスを読み込んでDataRaptor Extractで取得したデータとHTTPアクションで取得したデータをApexクラスに渡して比較処理を行う。

RemoteActionのApex呼び出し設定

呼び出すApexの設定はこのように行います。

RemoteActionのInput設定画面

Accountには「DRExtract_getAccount」の取得結果が入ります。 Api_Addressには「HttpAction_AddressApi」の取得結果が入ります。

Apex処理(ポイントとなる箇所のみ抜粋)

処理を呼び出すために「System.Callable」をインプリメントしてあげる必要があります。 抜粋したメソッドは定型句です。 サンプルでは、”Address”というキーでoutputを返しています。

Apex処理②(ポイントとなる箇所のみ抜粋)

①の後の処理で定義したInputの値を使って処理を行っていきます。 処理した結果をMapやList形式で返します。
ResponceAction
RemoteActionで受け取った結果に対し、キー”Address”で取得された値をOmniScriptに返す。

ResponceActionの設定

ResponceActionのOutputはこのように定義します。
以上が実装内容のポイントとなります。

まとめ(メリットとデメリット)

Integration Procedureを使用するメリット

・複数のデータ処理を組み合わせて1つの処理として定義することができる。

・DataRaptor(レコードのI/O)、HttpAction、RemoteAction(Apexクラス)といったさまざまな種類の処理を呼び出すことができる。

・データ処理を組み合わせて1つの処理を定義するため、1つ1つのデータ処理を小さい単位で設計することができる。これにより再利用性が高まる。

Integration Procedureを使用するデメリット

・Integration Procedureの開発のデザイン画面が他コンポーネントと大きく異なっており、開発のための学習コストがかかる。

・OmniStudio自体がまだまだアップデートが期待できるような機能なので、引数の渡し方がコンポーネントごとに違うといったように操作感に慣れるまで苦労した点が多々あった。

感想

今回のサンプル作成で私は初めてOmniStudioをさわりました。
デメリットにも記載したのですが、最初から一人で実装するとなるとOmniStudioの操作感に慣れるまで時間がかかるなと感じました。
慣れてしまえばコードを書くことなく簡単に処理を実装できる優れた機能なので、また時間を見つけて何か作ってみたいなと思っています。
また、Integration ProcedureはSalesforce内外のデータや処理ロジックを組み合わせて複雑な処理をできるため、資源の有効活用という面でも大きな可能性を感じました。

今回は社内の知見があるメンバーと一緒にサンプルの作成を行い、分からないところを教えてもらいながら進められたので心強かったです!(IさんSさんありがとうございました!)
33 件
     
  • banner
  • banner

関連する記事