Business Process
Choreographer では、ビジネス・プロセスとヒューマン・タスクのロジックをスタッフの解決から分離することができます。スタッフ照会は、ディレクトリー・サービスに固有のプラグインを使用して解決されます。スタッフ・サービス使用の基本的な側面については、以下の項で説明します。
スタッフ解決プラグインについて詳しくは、WebSphere Business Process Choreographer の 「Process
Choreographer: Staff Resolution Architecture」、「Process Choreographer:
Programming Model for Staff Resolution」、および「Process Choreographer:
Staff Resolution Parameter Reference」のホワイト・ペーパーを参照してください。
スタッフ照会とスタッフ・サービスの概念
スタッフ・サポート・サービスのスタッフ照会を定義するには、WebSphere Integration Developer を使用します。スタッフ照会はスタッフ照会テンプレート、スタッフ動詞が基本になっており、ヒューマン・タスクおよびビジネス・プロセス (ProcessStarter や PotentialOwners など) の予測されるロールと関連しています。
スタッフ動詞は固有の名前で識別しますが、ここには一連の照会パラメーターが含まれます。
パラメーター化されたスタッフ動詞はアプリケーションのデプロイメント時に変換され、リポジトリー固有のスタッフ照会を判別します。
これを使用するのは、ユーザー・リポジトリーからユーザーの ID を検索するためにビジネス・プロセスまたはヒューマン・タスクを実行するときです。
各ビジネス・プロセスまたはヒューマン・タスクは、その JNDI 名によって特定のスタッフ・プラグイン構成と関連付けられます。
この構成はデプロイメント時にプロセス定義またはタスク定義から抽出され、検出された各スタッフ動詞をリポジトリー固有のスタッフ照会にマップするときに使用されます。このマッピングは XSL 変換ファイルによって制御されますが、このファイルはスタッフ動詞を入力として使用し、対応するリポジトリー固有の照会を出力します。
デフォルトでは、異なるユーザー・リポジトリー・オプションを表す次の 3 つのスタッフ・プラグイン・プロバイダーがあります。
- LDAP スタッフ・プラグイン・プロバイダーは、LDAP サーバーに対して実行できるスタッフ照会を生成するときに使用します。
- ユーザー・レジストリー・スタッフ・プラグイン・プロバイダーは、WebSphere Application Server のユーザー・レジストリーに対して実行できるスタッフ照会を生成するときに使用します。
- システム・スタッフ・プラグイン・プロバイダーは、ユーザー・リポジトリーとは関連していません。その代わりに、スタッフ動詞パラメーターから直接得られるユーザー ID を戻します。このプラグイン・プロバイダーの目的は、テストとプロトタイピングです。
前述のスタッフ・プラグイン・プロバイダーは、それぞれ 1 つ以上の構成と関連付けられます。特に、1 つの構成が 1 つの XSL 変換ファイルを指定し、このファイルがスタッフ動詞とリポジトリーに固有のスタッフ照会との間のマッピングを実行します。
デフォルトでは、以下の変換ファイルが用意されています。
- LDAPTransformation.xsl ファイルは、JNDI インターフェースを介して実行できる LDAP 固有のスタッフ照会にスタッフ動詞をマップします。
- UserRegistryTransformation.xsl ファイルは、WebSphere ユーザー・レジストリーに固有のスタッフ照会にスタッフ動詞をマップします。
- SystemTransformation.xsl ファイルは、スタッフ動詞内に指定されている実際のユーザー ID にスタッフ動詞をマップします。
実ユーザー・リポジトリーは必要ありません。
- EverybodyTransformation.xsl ファイルは、すべてのスタッフ動詞をデフォルトの結果である「everybody」にマップします。実ユーザー・リポジトリーは必要ありません。
スタッフ照会のインプリメント
次の例では、スタッフ照会をインプリメントするときに必要な手順を要約して示します。
- WebSphere Integration Developer を使用することにより、モデラーは新規作成タスクとスタッフ・プラグイン構成 bpe/staff/sampleldapconfiguration を関連付けます。
- WebSphere Integration Developer を使用することにより、モデラーはタスクのロールと対応するスタッフ動詞を関連付けます。例えば、PotentialOwners は以下のパラメーターを含むスタッフ動詞「Group Members」と関連付けられます。
- 値「cn=group1,dc=mycomp,dc=com」に設定された「GroupName」
- 値「true」に設定された「IncludeSubgroups」
- タスクのコンテキストで、WebSphere Integration Developer は、動詞の定義を次のように XML 断片として保管します。
<verb>
<name>Group Members</name>
<parameter id="GroupName">cn=group1,dc=mycomp,dc=com</parameter>
<parameter id="IncludeSubgroups">true</parameter>
</verb>
- タスクを WebSphere Application Server に配置すると、スタッフ・サポート・サービスが LDAP スタッフ・プラグイン・プロバイダー bpe/staff/sampleldapconfiguration を使用することを設定します。関連の LDAPTransformation.xsl ファイルは、スタッフ動詞を LDAP 固有の照会に変換するときに使用します。この照会は、内部で格納されます。
スタッフ照会の動詞セット
スタッフ・サポート・サービスは、ユーザー・リポジトリー・インフラストラクチャーから独立した、抽象的な形式の照会を受け入れます。プロセス・エディターおよびタスク・エディターの両方に、プロセスおよびタスクをモデル化時に使用可能な、定義済みのスタッフ動詞のセットがあります。これらの動詞は、VerbSet.xml ファイルに含まれています。このファイルは WebSphere Integration Developer と共にインストールされます。
個々のスタッフ解決プラグインおよび XSLT マッピング・ファイルで、すべての動詞がサポートされるわけではありません。例えば、Manager of Employee という動詞は、ユーザー・レジストリーやシステム・プラグインを使用する場合は使用できません。スタッフ照会動詞セットは変更することができます。ファイルのコピーに対して変更を加えてください。コピーされたファイルは必ず、別のファイル名にしてください。
次の定義済み動詞セットを使用することができます。
これらの各動詞と組み合わせて使用できるパラメーターについては、『定義済みスタッフ動詞とそのパラメーター』を参照してください。
- Department Members
- この動詞は、部門のメンバーを検索する照会を定義するときに使用します。
検索されるユーザーは、特定の部門 (DepartmentName、
AlternativeDepartmentName1、または AlternativeDepartmentName2) のいずれかに属します。この動詞は、LDAP プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Group
- この動詞は、groupName パラメーターと一致するグループの名前を検索するときに使用します。これはグループ作業項目と共に使用されます。
この動詞は、すべてのプラグインによってサポートされます。
- Everybody
- この動詞は、WebSphere Process Server によって認証されたすべてのユーザーに作業項目を割り当てるときに使用します。この動詞は、システム、ユーザー・レジストリー、LDAP の各プラグインによってサポートされます。
- Group Members
- この動詞は、3 つまでのグループのメンバーを検索する照会を定義するときに使用します。
検索されるユーザーは、特定のグループ (GroupName、
AlternativeGroupName1、または AlternativeGroupName2) のいずれかに属します。この動詞は、ユーザー・レジストリーおよび LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Group Members without Named Users
- この動詞は、グループのメンバーのうち、明示的に指定されたそのグループのユーザーを除くメンバー を検索する照会を定義するときに使用します。
除外するものとして、1 人以上のメンバーをコンマで区切ったリストの形で指定することができます。
この動詞は、ユーザー・レジストリーおよび LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Group Members without Filtered Users
- この動詞は、グループのメンバーのうち、LDAP 検索フィルターで定義された一連のユーザーを除くメンバーを検索する照会を定義するときに使用します。この動詞は、LDAP プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Group Search
- この動詞は、属性の一致に基づいてグループを検索し、そのグループのメンバーを取得するときに使用します。この動詞は、ユーザー・レジストリーおよび LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Manager of Employee
- この動詞は、人の名前を使用してその人の管理者を検索するときに使用します。
この動詞は、LDAP プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Manager of Employee by user ID
- この動詞は、人のユーザー ID を使用してその人の管理者を検索するときに使用します。
この動詞は、コンテキスト照会と組み合わせて使用すると便利です。この動詞は、LDAP プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Native Query
- この動詞は、ディレクトリー固有のパラメーターに基づいた固有の照会を定義するときに使用します。
この動詞は、ユーザー・レジストリーおよび LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Nobody
- この動詞は、標準のユーザーが作業項目にアクセスするのを拒否するときに使用します。インライン・タスクの場合は、プロセス管理者とビジネス・プロセスのシステム管理者にのみアクセス権があります。スタンドアロン・タスクの場合は、ヒューマン・タスク管理者とヒューマン・タスクのシステム管理者のみにアクセス権があります。使用する API により、許可される J2EE 管理者は異なります。ビジネス・プロセス API の場合は BPESystemAdministrator ユーザーになり、ヒューマン・タスク API の場合は TaskSystemAdministrator ユーザーになります。この動詞は、システム、ユーザー・レジストリー、LDAP の各プラグインによってサポートされます。
- Person Search
- この動詞は、属性の一致に基づいて人を検索するときに使用します。この動詞は、ユーザー・レジストリーおよび LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Role Members
- この動詞は、スタッフ・リポジトリーのロールに関連付けられているユーザーを検索するときに使用します。
検索されるユーザーは、指定のロール (RoleName、AlternativeRoleName1、または AlternativeRoleName2) のいずれかに属します。この動詞は、LDAP プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Users
- この動詞は、名前で認識されているユーザーについてのスタッフ照会を定義するときに使用します。
プロセス・テンプレートにユーザー名をハードコーディングすることはお勧めできません。
この動詞は、テストを目的とする場合に役立ちます。この動詞は、システム、ユーザー・レジストリー、LDAP の各プラグインによってサポートされます。デフォルトのマッピング XSLT ファイルを、自分の組織の LDAP スキーマに合うようにカスタマイズする必要がある場合があります。
- Users by user ID
- この動詞は、ユーザー ID が認識されているユーザーについてのスタッフ照会を定義するときに使用します。
プロセス・テンプレートとタスク・テンプレートにユーザー ID をハードコーディングすることはお勧めできませんが、この動詞はコンテキスト照会と組み合わせて使用すると便利です。例えば、次のように指定します。
User [username='%wf:process.starter%']
この動詞は、テストを目的とする場合に役立ちます。この動詞は、システム、ユーザー・レジストリー、LDAP の各プラグインによってサポートされます。
- Users by user ID without Named Users
- この動詞は、ユーザー ID が認識されているユーザー (明示的に指定されたユーザー ID を持つユーザーを除く) についてのスタッフ照会を定義するときに使用します。プロセス・テンプレートとタスク・テンプレートにユーザー ID をハードコーディングすることはお勧めできませんが、この動詞はコンテキスト照会と組み合わせて使用すると便利です。例えば、次のように指定します。
User [userID='%htm:task.potentialStarters%', NamedUsers='%wf:activity(...).owner%']
リポジトリー固有のスタッフ照会
スタッフ・プラグイン構成に関連している XSL 変換ファイルは、特定のリポジトリーに固有のスタッフ照会を生成するときに使用します。
各照会はそれぞれのスタッフ・プラグインによって実行され、これによってユーザー ID のリストを取得することができます。
スタッフ・プラグインで使用できる定義済み照会は、プラグインで実行できる呼び出しに対応しているため、固定されています。
定義済み照会を基本にすると、以下の仕組みを使用してより複雑な照会を作成できます。
- 照会結果を結合することは、個々の照会で戻されたユーザー ID をユーザー ID の現在の結果リストに追加することを意味します。例えば、LDAP スタッフ・プラグインでは、特に以下のタイプの定義済み照会を使用できます。
指定したグループのグループ・メンバーのユーザー ID リスト:
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
指定したユーザーのユーザー ID:
<sldap:user dn="uid=user1,dc=mycomp" .../>
指定したグループのメンバーのユーザー ID リストに加えて指定したユーザーの ID という複雑な照会を構成できます。
<sldap:staffQueries>
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
<sldap:user dn="uid=user1,dc=mycomp" .../>
</sldap:staffQueries>
- 照会結果の差をとることは、<remove> 照会で戻されたユーザーID を現在の結果リストから削除することを意味します。
例えば、指定したグループ・メンバーを対象として検索した ID のリストから "user1" を削除する場合は、次のように記述します。
<sldap:staffQueries>
<sldap:usersOfGroup groupDN="cn=group1,dc=mycomp" recursive="yes">
...
</sldap:usersOfGroup>
<sldap:remove value="user1"/>
</sldap:staffQueries>
- 照会結果を参照することは、1 つの照会から得られた結果を使用して後続の照会の振る舞いに影響を及ぼすことを意味します。例えば、次の断片では、照会を 2 回実行しています。まず、ユーザー "uid=user1,…" の LDAP 項目にある "manager" 属性の値を取得して中間の変数 "supervisor" に保管します。次に、この変数を使用してマネージャーの LDAP 項目を検索し、関連のユーザー ID を取得します。
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="uid=user1,dc=mycomp" attribute="manager" ... />
</sldap:intermediateResult>
<sldap:user dn="%supervisor% .../>
</sldap:staffQueries>
前述した 3 つの組み合わせ規則に従って構成したスタッフ照会は、スタッフ・プラグインで実行できます。
サポートされている各スタッフ・プラグインのすべての定義済みスタッフ照会の詳細と、照会のその他の組み合わせ例については、
WebSphere Business Process Choreographer のホワイト・ペーパー「
Process Choreographer: Staff Resolution Parameter
Reference」を参照してください。
スタッフ動詞の XSL 変換ファイル
スタッフ・プラグイン構成用に指定された XSL 変換ファイルは、スタッフ動詞とリポジトリー固有のスタッフ照会間のマッピングを定義します。各スタッフ・プラグイン構成には、それ専用の XSL 変換ファイルがあることが予想されています。
デフォルトの変換ファイルは、次のとおりです。
- LDAP スタッフ・プロバイダー・プラグイン用の LDAPTransformation.xsl
- ユーザー・レジストリー・スタッフ・プロバイダー・プラグイン用の UserRegistryTransformation.xsl
- システム・スタッフ・プロバイダー・プラグイン用の SystemTransformation.xsl および EverybodyTransformation.xsl
これらの変換ファイルは、一連の定義済みスタッフ動詞を、対応するリポジトリー固有の照会 (単純および複合) にマップします。これらのファイルは、
install_root/ProcessChoreographer/Staff ディレクトリーにあります。
変換ファイルでは、生成されたリポジトリー固有照会を使用する場合に、スタッフ動詞とその実行について特定のセマンティクスを想定しています。
他のセマンティクスが必要な場合は、それに応じて変換ファイルでのマッピングも変更する必要があります。
例えば、LDAP スタッフ・プラグインは次のような定義済みのスタッフ動詞と合わせて提供されます。
<staff:verb>
<staff:name>Manager of Employee</staff:name>
<staff:parameter id="EmployeeName">
uid=anEmployeeName,cn=users,dc=ibm,dc=com
</staff:parameter>
</staff:verb>
この動詞は LDAPTransformation.xsl ファイルによって、次のように LDAP 照会にマップされます。
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="anEmployeeName" attribute="manager"
objectclass="inetOrgPerson"/>
</sldap:intermediateResult>
<sldap:user dn="%supervisor%" attribute="uid" objectclass="inetOrgPerson"/>
</sldap:staffQueries>
ここでは、スーパーバイザー (supervisor) の LDAP DN が従業員 (employee) の属性 "manager" に格納されていることを明示的に想定しています。
この動詞のセマンティクスが異なる場合、例えばスーパーバイザーの元の LDAP 属性が "teacher" である場合を考えます。この場合は、属性の違いに応じて LDAP 固有の照会を次のように変更する必要があります。
<sldap:staffQueries>
<sldap:intermediateResult name="supervisor">
<sldap:user dn="anEmployeeName" attribute="teacher"
objectclass="inetOrgPerson"/>
</sldap:intermediateResult>
<sldap:user dn="%supervisor%" attribute="uid" objectclass="inetOrgPerson"/>
</sldap:staffQueries>
これを実現するには、LDAPTransformation.xsl ファイルをしかるべく改変します。
<xsl:template name="ManagerOfEmployee">
<sldap:staffQueries>...
<sldap:intermediateResult>
<xsl:attribute name="name">supervisor</xsl:attribute>
<sldap:user>
<xsl:attribute name="dn">
<xsl:value-of select="staff:parameter[@id='EmployeeName']"/>
</xsl:attribute>
<xsl:attribute name="attribute">teacher</xsl:attribute>
...
</sldap:user>
</sldap:intermediateResult>
<sldap:user>
<xsl:attribute name="dn">%supervisor%</xsl:attribute>
...
</sldap:user>
</sldap:staffQueries>
</xsl:template>
デフォルトの変換ファイルを表示すると、マッピング動作の理解を深めることができます。デフォルトの変換のセマンティクスについては、
スタッフ照会の動詞セットを参照してください。
スタッフ動詞でのタスク・コンテキスト変数およびプロセス・コンテキスト変数の使用
特定のスタッフ動詞では、ビジネス・プロセス・コンテキスト変数とヒューマン・タスク・コンテキスト変数をパラメーター値として使用できます。
これにより、コンテキストによって提供される情報に基づいて、スタッフ・サポート・サービスが実行時にスタッフ動詞を解決できるようになります。
スタッフ動詞の例を次に示します。
<verb>
<name>Users by user ID</staff:name>
<parameter id="UserID">%htm:input.¥name%</staff:parameter>
</verb>
このスタッフ動詞は、タスク・コンテキスト変数 htm:input.¥name をパラメーターとして指定します。この変数は、タスクの開始時にタスクが受け取る入力メッセージの名前の部分を表します。
スタッフ・サポート・サービスは、コンテキスト変数を実際のタスク・コンテキスト値に動的に置き換えます。
コンテキスト変数を使用できる動詞とパラメーターの詳細については、定義済みスタッフ動詞を参照してください。
E メール動詞セット
WebSphere Integration Developer の E メール動詞セットの目的は、タスク・エスカレーションの E メール通知です。これらの E メール動詞は、モデル化およびデプロイメント中にスタッフ・リポジトリーについて実行できる一連の照会に変換されます。E メール動詞は、LDAP プラグインがサポートする最も一般的なスタッフ動詞に対して定義されます。以下の E メール動詞が使用可能です。
- Email Address for Department Members
- Email Address for Group Members
- Email Address for Group Members without Names Users
- Email Address for Group Members without Filtered Users
- Email Address for Group Search
- Email Address for Role Members
- Email Address for Users
- Email Address for Users by User ID
その他の LDAP スタッフ動詞の場合は、スタッフ動詞が取得したユーザー ID が、Email Address
for Users by User ID 動詞への入力として使用されます。
E メール動詞を特定のスタッフ・リポジトリーについての照会として実行するには、これらの動詞を、LDAP XSL 変換を使用して実行可能な照会に変換する必要があります。
変換の結果 (マッピング) は、LDAP スタッフ解決プラグインによって実行することができます。実行時に
、user1@mycomp.com、user2@mycomp.com などの E メール・アドレスのセットが照会によって戻されます。