ワークフロー・サービス・クライアント
ワークリスト・アプリケーションは、ワークフロー・サービス・クライアントを介して様々なワークフロー・サービスにアクセスします。ワークフロー・サービス・クライアントのコードは、様々なローカル・プロトコルとリモート・プロトコルを使用したワークフロー・サービスとの通信に必要なロジックをすべてカプセル化します。ワークリスト・アプリケーションにワークフロー・サービス・クライアントのインスタンスがある場合は、クライアントとワークフロー・サービスとの通信方法を考慮する必要はありません。
クライアントを使用するメリットは、次のとおりです。
-
SOAP/HTTPやEnterprise JavaBeansなどの基礎となる接続メカニズムの複雑さが軽減されます。
-
使用する起動メカニズムの変更(SOAP/HTTPからリモートEnterprise JavaBeansへの変更など)が容易になります。
IWorkflowServiceClient
インタフェースのインスタンス作成には、次のクラスが使用されます。
oracle.bpel.services.workflow.client.WorkflowServiceClientFactory
WorkflowServiceClientFactory
には、ワークフロー・クライアントを作成する複数のメソッドがあります。getWorkflowServiceClient
は最も単純なメソッドで、パラメータとしてクライアント・タイプのみをとります。クライアント・タイプは次のいずれかです。
-
WorkflowServiceClientFactory.REMOTE_CLIENT
—クライアントはリモートEnterprise JavaBeansインタフェースを使用してリモートのワークフロー・サービスを起動します。 -
WorkflowServiceClientFactory.SOAP_CLIENT
—クライアントはSOAPを使用して、リモートのワークフロー・サービスへのWebサービス・インタフェースを起動します。
他のファクトリ・メソッドを使用すると、接続プロパティを直接指定し(ファクトリで接続プロパティをwf_client_config.xml file
からロードする必要はありません)、クライアント・アクティビティを記録するロガーを指定できます。
このリリースには、ワークフロー・サービス・クライアントの次の拡張機能が含まれています。
-
次の例1および2に示すように、ワークフロー・クライアント構成は、JAXBオブジェクトまたはマップのいずれかを使用して指定できます。
例1
WorkflowServicesClientConfigurationType wscct = new WorkflowServicesClientConfigurationType(); List<ServerType> servers = wscct.getServer(); ServerType server = new ServerType(); server.setDefault(true); server.setName(serverName); servers.add(server); RemoteClientType rct = new RemoteClientType(); rct.setServerURL("t3://stapj73:7001"); rct.setUserName("weblogic"); rct.setPassword("weblogic")); rct.setInitialContextFactory("weblogic.jndi.WLInitialContextFactory"); rct.setParticipateInClientTransaction(false); server.setRemoteClient(rct); IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.REMOTE_CLIENT, wscct, logger);
例2
Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY,java.lang.String> properties = new HashMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY,java.lang.String>(); properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.MODE, IWorkflowServiceClientConstants.MODE_DYNAMIC); properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://localhost:8888"); IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT, properties, null);
-
クライアントでは、クライアントがメッセージを記録する
java.util.logging.Logger
を必要に応じて渡すことができます。ロガーが指定されていない場合、ワークフロー・サービスのクライアント・コードは何も記録しません。次のコード・サンプルは、ロガーをワークフロー・サービス・クライアントに渡す方法を示しています。java.util.logging.Logger logger = ....; IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT, properties, logger);
すべてのワークフロー・サービスのクライアント・ライブラリは、ファクトリを介して取得できます。表34-1で、各サービスに使用可能なクライアントを確認してください。
BPMIdentityService
およびBPMIdentityConfigService
のインスタンスは、WorkflowServiceClientFactory
でgetSOAPIdentityServiceClient
メソッドおよびgetSOAPIdentityConfigServiceClient
メソッドをコールして取得できます。その他のすべてのサービスは、IWorkflowServiceClient
のインスタンスを介して取得できます。
クライアント・クラスは、サービスのエンドポイントにwf_client_config.xml
構成ファイルを使用します。クライアントのクラスパスでは、このファイルはクラスパス直下にあります。つまり、このファイルが格納されているディレクトリはクラスパス内にあります。wf_client_config.xml
ファイルには、次の内容が含まれています。
-
次のコード・サンプルに、リモート・クライアント用のセクションを示します。
<remoteClient>
<serverURL>t3://hostname.domain_name:7001</serverURL>
<userName>weblogic</userName>
<password>weblogic</password>
<initialContextFactory>weblogic.jndi.WLInitialContextFactory
</initialContextFactory>
<participateInClientTransaction>false</participateInClientTransaction>
</remoteClient>
-
次のコード・サンプルに、各サービスのSOAPエンドポイント用のセクションを示します。
<soapClient>
<rootEndPointURL>http://hostname.domain_name:7001</rootEndPointURL>
<identityPropagation mode="dynamic" type="saml">
<policy-references>
<policy-reference enabled="true" category="security"
uri="oracle/wss10_saml_token_client_policy"/>
</policy-references>
</identityPropagation>
</soapClient>
ワークフロー・クライアント構成のXMLスキーマ定義は、wf_client_config.xsd
ファイルに格納されています。