コンテキスト・サービスは、コンテキスト (JMS ヘッダーなどのプロトコル・ヘッダーや、アカウント ID などのユーザー・コンテキストを含む) を Service Component Architecture (SCA) 呼び出しパスに沿って伝搬します。 コンテキスト・サービスは、一連の API と構成可能な設定を提供します。
コンテキスト・サービス伝搬が双方向の場合、現行のコンテキストは常に応答コンテキストによって上書きされます。 SCA コンポーネントから別の SCA コンポーネントへの呼び出しを実行している場合、応答には異なるコンテキストが含まれます。 サービス・コンポーネントには着信コンテキストがありますが、別のサービスを呼び出すと、元の発信コンテキストがもう一方のサービスによって上書きされます。 応答コンテキストは新しいコンテキストになります。
コンテキスト・サービス伝搬が片方向の場合、元のコンテキストがそのまま維持されます。
コンテキスト・サービスのライフサイクルは、呼び出しに関連付けられます。 要求には関連コンテキストがあり、そのコンテキストのライフサイクルがその特定の要求の処理にバインドされます。 要求が処理を終了すると、そのコンテキストのライフサイクルが終了します。
//必要なクラスをインポート import com.ibm.bpm.context.ContextService; import com.ibm.websphere.sca.ServiceManager; import com.ibm.bpm.context.cobo.ContextObject; import com.ibm.bpm.context.cobo.ContextObjectFactory; import com.ibm.bpm.context.cobo.HeaderInfoType; import com.ibm.bpm.context.cobo.UserDefinedContextType; //ContextService の場所を指定 ContextService contextService = (ContextService)ServiceManager.INSTANCE. locateService ("com/ibm/bpm/context/ContextService"); // ヘッダー情報を取得 HeaderInfo headerInfo = contextService.getHeaderInfo(); // 現行の実行コンテキストでユーザー定義コンテキストを取得 UserDefinedContextType userDefinedContext = contextService.getUserDefinedContext(); if(userDefinedContext == null){ // create a new context if context is null userDefinedContext = ContextObjectFactory.eINSTANCE.createUserDefinedContextType() } // ヘッダー情報および userDefinedContext を変更 // ユーザー定義コンテキストを現行の実行コンテキストに再び設定 contextService.setUserDefinedContext(userDefinedContext); // ヘッダー情報を現行の実行コンテキストに再び設定 contextService.setHeaderInfo(headerInfo);
コンテキスト・サービスには、バインディング振る舞いを指定する構成可能ルールと表があります。 詳しくは、『参照』セクションに記載されている生成済み API および SPI の資料を参照してください。 コンテキスト・サービスは、WebSphere® Integration Developer の開発中に、インポートおよびエクスポート・プロパティーに設定できます。 詳しくは、WebSphere®Integration Developer インフォメーション・センターのインポートおよびエクスポート・バインディングに関する情報を参照してください。