プロセス定義の[プロパティ]ビューの[一般]タブの[担当者]領域、またはJava Actionを使用して、ユーザーにタスクを割り当てることができます。プロセス定義を作成した後でユーザーへタスクを割り当てる場合は、Java Actionを使用します。
ビジネス要件によって、アクティビティは既に完了したアクティビティの実行者と関連するユーザーへ割り当てる必要があります。
この関係は管理者、同僚、チームリーダーなどが考えられます。例えば、“User1”が“Activity1”の実行者であるとします。“Activity2”は“User1”の管理者のユーザー(“User2”)によって完了する必要があります。この機能を使用すると、“User1”と“User2”の関連を設定して、“Activity2”を“User2”に割り当てることができます。
同様に、ユーザ定義属性(UDA)に関連したユーザー名にタスクを割り当てることができます。例えば“Variable1”は“User1”に関連するSTRINGタイプのユーザ定義属性です。この機能を使用すると、“Activity2”は“User1”の管理者の“User2”に割り当てられます。Java Actionでこの関連性を設定することで、“User2”に“Activity2”を割り当てることができます。
注意
[関連から担当者を設定]Java ActionはSTRINGタイプのユーザ定義属性のみ定義することができます。
[関連から担当者を設定]を設定する方法について説明します。
ユーザーを割り当てるアクティビティをプロセス定義から選択します。
注意
[関連から担当者を設定]Java Actionは、Activityノード、Voting ActivityノードまたはCompound Activityノードのみに定義できます。
[プロパティ]ビューの[アクションセット]タブをクリックします。
[アクションセット]タブに[Java Actionセット]領域が表示されます。デフォルトで、[ロールアクション]タブが表示されます。
[ロールアクション]を選択し、[追加]をクリックします。
[アクションタイプリスト]ダイアログが表示されます。
[サーバアクション]をダブルクリックします。
[関連から担当者を設定]を選択し、[作成]をクリックします。
図11.10 関連から担当者を選択
以下のセクションでは、アクティビティの実行者やユーザ定義属性(UDA)との関連を使用して、ユーザーにアクティビティを割り当てる方法について説明します。
注意
[関連名]は必須のフィールドです。
完了したアクティビティの実行者と関連するユーザーにアクティビティを割り当てる方法について説明します。
オプション: [アクション名]にアクションの名前を入力します。
オプション: [ノート]を編集します。
[データソースの選択]にある[完了したアクティビティ]のラジオボタン(デフォルトとして選択されています)を選択します。
このラジオボタンを選択すると、コンボボックスに、ユーザーに割り当てられる必要があるアクティビティを除いたすべてのアクティビティを表示します。
コンボボックスから関連付けたい完了したアクティビティを選択します。
[関連名]フィールドに関連名を入力します。例えば、“User1”が“Activity1”を完了しており、“User2”が“User1”の管理者とします。もし“User2”を“Activity2”に割り当てたいなら、[完了したアクティビティ]ドロップダウンリストで“Activity1”を選択して、[関連名]フィールドで管理者を指定します。
[OK]をクリックします。上の例の場合、“Activity2”は“User1”の管理者(“User2”)へ割り当てられます。
UDAに関連するユーザーにアクティビティを割り当てる
オプション: [アクション名]と[ノート]フィールドそれぞれを編集します。
[データソースの選択]にある[UDAの値]のラジオボタンを選択します。このラジオボタンを選択すると、プロセス定義のすべてのSTRING型のUDAがコンボボックスに表示されます。
[UDAの値]コンボボックスからUDAを選択します。例えば、“User2”を“Activity2”に割り当てたいなら、[UDAの値]で“Variable1”を選択します。“User1”は“Variable1”に関係しており、“User2”は“User1”の管理者です。
[関連名]フィールドに関連名を入力します。[関連名]フィールドで管理者を指定してください。
[OK]をクリックします。上の例の場合、“Activity2”は“User1”の管理者(“User2”)へ割り当てられます。
注意
このアクティビティに割り当てられているロール内のユーザーのみにタスクを割り当てることができます。別のロールのユーザーにタスクを割り当てたい場合は、現在のロールにこのユーザーを追加する必要があります。
注意
ロールアクションの定義によって、このアクティビティは特定のユーザーに割り当てられます。この場合、アクティビティの担当者の定義は必要ありません。同じ方法でVoting ActivityやCompound Activityを割り当てることができます。
注意
補償アクションを使用してこのアクションを補償する必要はありません。このアクションによって実行された変更は、Systemwalker Runbook Automation内に限定されており、プロセスインスタンスがエラー状態になった後ロールバックされるからです。補償アクションの詳細については“11.1.7 Java Actionのエラー処理”を参照してください。
関連名について
関連名について以下に説明します。
アクティビティがロールに割り当てられたあと、ロールに含まれる人はそのアクティビティを操作することができるようになります。インスタンスに対し、アクティビティがマネージャーロールに割り当てられた場合、マネージャーグループのすべてのメンバーが、そのアクティビティを操作することができます。しかし、実際には、1人のマネージャーだけがそのアクティビティを実行することになります。マネージャーは、そのアクティビティの作業者と呼ぶことができます。
アクティビティが実行されたあと、作業フローによっては、誰がアクティビティで作業するかを決定したい場合があるかも知れません。そして、その情報に基づいた対応をとりたいと考えるでしょう。
例えば、“カスタマーサポートの幹部社員”ロールに割り当てられた“カスタマー案件の記録”というアクティビティを考えます。まず、どの“カスタマーサポートの幹部社員”が、“カスタマー案件の記録”というアクティビティを実際に行ったかを確認する必要があります。次に、プロセスインスタンス中の“案件のエスカレート”という次のアクティビティに、同じ作業者を割り当てることが求められるでしょう。
com.fujitsu.iflow.server.intfパッケージのServerEnactmentContextインターフェースには、アクティビティの作業者を決定するために使用するgetActivityActor()というメソッドが含まれています。
getActivityActor()メソッドは、パラメーターとしてActivityノードの名前を与えることで、完了したActivityノードの作業者を取得することができます。
Voting Activityノードは、このメソッドをサポートしていません。
プロセスインスタンスの中のすべてのActivityノードに一意な名前を設定することをお勧めします。通過したノードに同じ名前のものが存在する場合、このメソッドは例外を返します。
次のサンプルは、Activity A の作業者を取得し、現在のアクティビティにその作業者を割り当てています。
public void assignActivityActor(ServerEnactmentContext sec){ String[] actor = new String[1]; actor[0] = sec.getActivityActor("Activity A"); sec.setActivityAssignees(actor); }
JavaScriptの一部として定義されたJavaActionで、このメソッドを呼ぶ必要があります。このメソッドの詳細は、“API Javadocマニュアル”を参照してください。
ある作業フローでは、アクティビティの作業者に対する階層関係やUDAの値を参照して、作業を割り当てることがあります。例えば、“会社名”というUDAに、“富士通”という値が設定されている場合、富士通というキーの“経営者”であることを確かめて、経営者だけを、特定のアクティビティに割り当てることができます。また、あるアクティビティに、Jimと呼ばれる作業者が割り当てられているとき、Jimのマネージャーが誰か探し出し、特定のアクティビティにそのマネージャーを割り当てることができます。
com.fujitsu.iflow.server.intfパッケージに含まれるServerEnactmentContextのresolveRelationship()メソッドを使用して、関係を決定します。
resolveRelationship()メソッドは、パラメーターとして基になる値と関連を使うことによって目標の値を返します。このメソッドは、ソースの値、関連、ターゲットの値をあらかじめ定義しておくことで、機能します。これにより、このメソッドは適切な値を返すことができます。
ソースの値 | 関連 | ターゲットの値 |
---|---|---|
Jim | manager | Robert |
Jim | assistant | Arthur |
Fujitsu | executive | Bob |
例えば、resolveRelationship("assistant", "Jim")はArthurを返します。
ソースの値 - 関連 - ターゲットの値のマッピングは、ディレクトリサービスまたはローカルユーザーストアのユーザープロファイルとして格納しなければなりません。ここで、ソースの値はユーザーID、関連はユーザー属性の名、ターゲットの値はユーザー属性の値となります。
ユーザープロファイルを作成するためには、“API Javadocマニュアル”のcom.fujitsu.iflow.model.workflowパッケージに含まれるDirectoryServicesインターフェースを参照してください。
ソースの値には、人および人以外のもの(会社名やグループ名)を設定することができます。人以外のオブジェクトのユーザープロファイルをディレクトリサーバやローカルユーザーストアに追加する場合は、ログインする目的で使用されないことに注意してください。
次のサンプルでは、“Activity A”の作業者とその作業者のManagerを取得して、現在のアクティビティにそのManagerを割り当てます。
public void assignManagerOfActivityActor(ServerEnactmentContext sec){ String[] managers = sec.resolveRelationship("Manager",sec.getActivityActor("Activity A")); sec.setActivityAssignees(managers); }
JavaScriptの一部として定義されたJavaActionで、このメソッドを呼ぶ必要があります。このメソッドの詳細は、“API Javadocマニュアル”を参照してください。
API Javadocマニュアル
“API Javadocマニュアル”は、“Systemwalker Runbook Automation メディアパック (15.1.2)” の中の“manual\BPM\javadoc”に格納されています。