サービスステップと検索サービスの実装 このトピックでは、サービスステップを作成して、Salesforce Apexクラスからサービスを検索する方法について説明します。
注: サンプルの自動化ステップとサンプルの検索サービスを含むarchive fileをダウンロードできます。
Apexベースのサービス呼び出しステップ IAeAutomatedStepServiceインタフェースを実装するApexクラスを使用して、新しいサービス呼び出しステップを作成できます。
IAeAutomatedStepServiceインタフェース 新しいサービスを作成するには、まず次の2つのインタフェースメソッドを実装します。
describe() services.xmlのメタデータを含むAeServiceDescriptionを返します。 invoke() 実行時に呼び出されます。 以下に例を示します。
global class icrtStep_EchoService implements IAeAutomatedStepService { global AeServiceDescription describe() { // called during synchronization } global AeServiceResponse invoke(AeServiceRequest aRequest) { // called at runtime } }
Apex自動化ステップを使用したサービス検出 Salesforceの組織を同期すると、Apexサービスは自身のクラス名に基づいて検出されます。クラス名が「icrtStep」で始まる場合、サービスステップ(「Apex自動化ステップ」)として認識されます。例えば、「icrtStep_EchoService」というApexクラスはサービスです。
プロセスオブジェクトまたはオブジェクトリストは、その他のプロセスのプロセスオブジェクトの入力または出力と同様に、JSONペイロード形式にシリアル化されます。これらはApexに送信され、Apex内のSystem.JSONクラスがJSONを解析できます。
プロセスオブジェクトを返すには、出力を「reference」または「objectlist」として定義し、オブジェクトをJSONにシリアル化して、Process Designerがそれらを変換してプロセスオブジェクトに戻せるようにします。
例えば、出力パラメータは次のようになります。
global AeServiceDescription.AeServiceParameterDesc output = sDescription.addOutputParameterDesc('objOutput', 'reference'); output.addParameterOption('referenceTo','Account');
サービスインタフェース Apexサービスは次の2つのメソッドを実装する必要があります。
describe() クラウドサービスで使用するために検出された情報を提供します。 次のフィールドを持つAeServiceDescription のインスタンスを返します。 フィールド
説明
serviceType
サービスのタイプ。サービスステップまたは検索。
namespaceQualifier
組織固有の名前空間。
name
サービスクラス名。
displayName
ユーザに表示される名前。
description
サービスを説明するテキスト。
inputParameter (0..n)
入力パラメータの説明のリスト。
(AeServiceDescription.AeParameterDesc)
outputParameter (0..n)
出力パラメータの説明のリスト。
(AeServiceDescription.AeParameterDesc)
invoke() サービスの実行時の動作を実装します。 パラメータ
説明
objectId
ホストのコンテキストの[適用対象]オブジェクトのID。
objectType
ホストのコンテキストの[適用対象]オブジェクトのタイプ。
parameter (0..n)
AeServiceParameterの名前/値ペアのリスト。
AeServiceRequest のインスタンスを入力とします。次のフィールドを持つAeServiceResponse のインスタンスを返します。 フィールド
説明
parameter (0..n)
AeServiceParameterの名前/値ペアのリスト。
errorInfo.AeErrorInfo
エラー情報を提供します。これを使用して、サービス内でキャッチされないフォールトを返すことなく、エラー情報をリレーできます。
errorInfo.errorMessage
エラーメッセージです。
errorInfo.invalidData
フィールドレベルのエラーの詳細です。
カスタム検索サービス 検索サービスをApexクラスとして実装できます。検索サービスは、ステップサービスと同じインタフェースと検出メカニズムを使用しますが、次の点が異なります。
次の例では、OwnerIdでフィルタ処理されたアカウント参照のvaluelistを返しています。
List<Account> accountList = [SELECT Name, id FROM Account WHERE OwnerId =:userRef LIMIT 20]; for (Account account: accountList) { // For a search service, return name/id as parameters response.addParameter(account.Name, account.Id); }
Salesforce接続の再パブリッシュ 注: Salesforce接続を再パブリッシュする必要があるのは、クラスを変更したときではなく、クラスインタフェースを変更したときです。