ワークフロー・サービス・クライアント

ワークリスト・アプリケーションは、ワークフロー・サービス・クライアントを介して様々なワークフロー・サービスにアクセスします。ワークフロー・サービス・クライアントのコードは、様々なローカル・プロトコルとリモート・プロトコルを使用したワークフロー・サービスとの通信に必要なロジックをすべてカプセル化します。ワークリスト・アプリケーションにワークフロー・サービス・クライアントのインスタンスがある場合は、クライアントとワークフロー・サービスとの通信方法を考慮する必要はありません。

クライアントを使用するメリットは、次のとおりです。

  • 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のインスタンスは、WorkflowServiceClientFactorygetSOAPIdentityServiceClientメソッドおよび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ファイルに格納されています。