プロパティ・マップでのワークフロー・クライアント構成

接続プロパティを動的に指定する場合は、java.util.Mapを使用してプロパティを指定できます。これらのプロパティは、構成ファイル内の定義よりも優先されます。したがって、wf_client_config.xmlに定義した値は、これらのプロパティの値によって上書きされます。サーバーへの接続詳細を動的に指定しない場合は、マップでのプロパティ設定を省略し、ファクトリ・メソッドにNULL値を渡すことができます。この場合、構成ファイルwf_client_config.xmlはクライアント・アプリケーションのクラスパス内で検索されます。

構成ファイルがクラスパス内にある必要があるのは、構成ファイルから構成を取得する場合のみです。特定のクライアント・タイプの全設定をプロパティ・マップを使用して行う場合、このファイルの設定はオプションです。また、JAXBオブジェクトにも構成ファイルは必要ありません。これは、すべての設定がJAXBオブジェクトから取得されるためです。次のコード・サンプルに詳細を示します。

IWorkflowServiceClient   wfSvcClient =
WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory
.REMOTE_CLIENT,
(Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> ) null, null);

この場合、クライアントは、クラスパス内で検出されたwf_client_config.xmlの値を使用してサービスにアクセスします。構成ファイルがクラスパス内に見つからない場合に、サービス・タイプに応じた設定を指定しないと、ワークフロー例外がスローされます。プロパティ・マップがNULLで、構成ファイルが見つからない場合も、例外がスローされます。構成ファイルが見つからない場合に、クライアントでマップ内の一部のプロパティが省略されていると、実行時にサービス・コールが失敗します(プロパティは構成ファイルの補足です)。

クライアント・プロパティは、WorkflowServiceClientFactoryメソッドを使用して定義できます。次のコード・サンプルに詳細を示します。

public static IWorkflowServiceClient getWorkflowServiceClient(String clientType,Map<CONNECTION_PROPERTY, String> properties,
Logger logger) hrows WorkflowException 

マップでプロパティのCONNECTION_PROPERTYタイプを使用してクライアント・タイプを定義すると、次のコード・サンプル示すファクトリ・メソッドを使用できます。

public static IWorkflowServiceClient getWorkflowServiceClient(Map<CONNECTION_
PROPERTY, String> properties,   Logger logger) throws WorkflowException

次に、クライアント・プロパティを設定するためにプロパティ・マップで使用できるIWorkflowServiceClientConstants.CONNECTION_PROPERTYを示します。

public enum CONNECTION_PROPERTY {
            MODE,  // not supported , deprecated
            EJB_INITIAL_CONTEXT_FACTORY,
            EJB_PROVIDER_URL,
            EJB_SECURITY_PRINCIPAL,
            EJB_SECURITY_CREDENTIALS,
            // SOAP configuration
            SOAP_END_POINT_ROOT,
            SOAP_IDENTITY_PROPAGATION, // if value is 'saml' then SAML-token
              identity propagation is used
            SOAP_IDENTITY_PROPAGATION_MODE,  // "dynamic'
            MANAGEMENT_POLICY_URI, // dafault value is "oracle/log_policy"
            SECURITY_POLICY_URI,   // default value is  "oracle/wss10_
               saml_token_client_policy"
            // REMOTE EJB
            TASK_SERVICE_PARTICIPATE_IN_CLIENT_TRANSACTION  // default value is
               false
            //(task service EJB starts a new transaction)
            CLIENT_TYPE,            DISCOVERY_OF_END_POINT,
            WSS_RECIPIENT_KEY_ALIAS,
            EJB_JNDI_SUFFIX // append to jndi name to used  foreign jndi name
 };

ノート:

プロパティ・マップを使用する場合、IWorkflowServiceClientConstants.CONNECTION_PROPERTY.MODEを指定する必要はありません。このプロパティは、11g リリース1では非推奨です。

次のコード・サンプルに、リモートEnterprise JavaBeansクライアントの例を示します。

Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_
PROPERTY,String>();
properties.put(CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_
FACTORY,"weblogic.jndi.WLInitialContextFactory");

properties.put(CONNECTION_PROPERTY.EJB_PROVIDER_URL,
 "t3://myhost.us.example.com:7001");
properties.put(CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");
properties.put(CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "weblogic");
IWorkflowServiceClient client =
 WorkflowServiceClientFactory.getWorkflowServiceClient(
                                WorkflowServiceClientFactory.REMOTE_CLIENT,
 properties, null);

次のコード・サンプルは、SOAPクライアントの例です。

Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_
PROPERTY,String>();
properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost:7001");
IWorkflowServiceClient client =
 WorkflowServiceClientFactory.getWorkflowServiceClient(
                                WorkflowServiceClientFactory.SOAP_CLIENT,
 properties, null);