ページの先頭行へ戻る
Systemwalker Runbook Automation Studio利用ガイド
Systemwalker

11.2.3 関連から担当者を設定

プロセス定義の[プロパティ]ビューの[一般]タブの[担当者]領域、または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タイプのユーザ定義属性のみ定義することができます。

[関連から担当者を設定]を設定する方法について説明します。

  1. ユーザーを割り当てるアクティビティをプロセス定義から選択します。

    注意

    [関連から担当者を設定]Java Actionは、Activityノード、Voting ActivityノードまたはCompound Activityノードのみに定義できます。

  2. [プロパティ]ビューの[アクションセット]タブをクリックします。

    [アクションセット]タブに[Java Actionセット]領域が表示されます。デフォルトで、[ロールアクション]タブが表示されます。

  3. [ロールアクション]を選択し、[追加]をクリックします。

    [アクションタイプリスト]ダイアログが表示されます。

  4. [サーバアクション]をダブルクリックします。

  5. [関連から担当者を設定]を選択し、[作成]をクリックします。

    図11.10 関連から担当者を選択

以下のセクションでは、アクティビティの実行者やユーザ定義属性(UDA)との関連を使用して、ユーザーにアクティビティを割り当てる方法について説明します。

注意

[関連名]は必須のフィールドです。

注意

このアクティビティに割り当てられているロール内のユーザーのみにタスクを割り当てることができます。別のロールのユーザーにタスクを割り当てたい場合は、現在のロールにこのユーザーを追加する必要があります。

注意

ロールアクションの定義によって、このアクティビティは特定のユーザーに割り当てられます。この場合、アクティビティの担当者の定義は必要ありません。同じ方法で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”に格納されています。