ここでは、ビジネス プロセス ダイアグラムでパスを決定する条件またはイベントを定義する方法を説明し、その概要を簡潔に説明します。
次のように、これらの条件を定義するためのプロセス記号があります:
包括的なゲートウェイ: 複数の判断が可能な、フローの分岐点または合流点を示します。このゲートウェイに信号が到達すると、コントロールに指定されているすべての条件が評価されます。評価結果が True になった条件のフローに信号が出力されます。常に、True になる条件が少なくとも 1 つは存在する必要があります。
イベントゲートウェイ: 条件ではなく、発生する 2 つ以上のイベントに基づいて決定される、複数のパスの分岐を設定できます。
排他的ゲートウェイ: 2 つ以上の経路にフローを分岐しますが、プロセスフローはいずれか 1 つのパスをとおります。各パスに課された条件の評価に基づき、次に進むパスが選択されます。True の条件がない場合、プロセスはゲートウェイに留まります。このため 'default' パスの使用が推奨されます。
この場合、実行する評価の複雑さに基づいて 3 つの方法で条件を定義できます。
オプションは次のとおりです:
1.各エッジの評価ルールを定義する
エッジには次のプロパティが表示されます:
上記の例では、 [ Condition type ] は [ Rule ] で演算式なので、ダイアグラムに含まれるトランザクションの項目属性と関連するデータを次の演算を使って定義できます: <、>、=、+、*、<>、-。
例:
Rental タスクで開始するレンタカーのプロセスがあります。このタスクのトランザクションではレンタルの詳細が入力されます。この詳細には、借り主、レンタル日数、レンタルする車のモデルなどがあります。次に、選択したモデルをルール RentalMake = 2 で評価します。
ここで評価されるのは、Rental トランザクションの従属項目属性です。借り主が Chevrolet を選択した場合、Chevrolet サブプロセスを介してフローが継続されます。
2.すべてのエッジを評価するプロシージャーを定義する
ゲートウェイには、次のプロパティが表示されます:
このプロパティで、進むパスを決定するときに実行するプロシージャーを定義します。プロシージャーを決定すると、エッジには前述の例で表示されるプロパティとは異なるプロパティが表示されます。この場合、定義する必要があるプロパティは [ Condition code ] です。この値が、プロシージャーで返される値と一致すると、このパスを通してフローが継続されます。
条件を評価するプロシージャーには、次のパラメータールールを含める必要があります。最大 100 文字まで指定できます:
Parm(in:&WorkflowProcessDefinition,in:&WorkflowProcessInstance, in: &WorkflowWorkitem, out: &conditionCode);
入力値の説明:
&WorkflowProcessDefinition
WorkflowProcessDefinition タイプです。
&WorkflowProcessInstance
Workflow ProcessInstance タイプです。
&WorkflowWorkitem
WorkflowWorkitem タイプです。
&conditionCode
Numeric(4) タイプです。
注: ユーザーは、プロシージャーが有効な値 (つまり、エッジのいずれか 1 つに一致する) を返すように定義する必要があります。
例:
上記で定義したレンタカーのプロセスの場合、条件を評価するプロシージャーに次のコードを含めます:
For each
Where RentalId = &WorkflowProcessInstance.GetApplicationDataByName('RentalId').NumericValue
if RentalMake = 1
&conditionCode = 1
Else
If RentalMake = 2
&conditionCode = 2
Endif
Endif
Endfor
また、前述のように、パラメータールールを定義する必要があります。
プロシージャーを定義したら、プロパティを設定してゲートウェイと関連付けて、各プロパティに対応する条件コードをエッジで定義する必要があります。
3.各エッジのプロシージャーを定義する
条件としてルールを定義する場合と同様に、エッジには次のプロパティが表示されます:
この場合、条件のタイプは [ Procedure ] です。次に、プロシージャーを定義する必要があり、各エッジが、関連付けられているプロシージャーに基づいて評価されます。関連付けられているプロシージャーには前述の例で定義した形式が必要です。
条件を満たしてフローを継続する必要がある場合、プロシージャーの結果は 1 でなければなりません。それ以外は 0 になる必要があります。
この場合、条件で次のような中間イベントについて評価する必要があります:
タイマーの場合、イベントで指定した時間が経過するとプロセスが継続します。
一方、シグナルは、スロータイプのシグナルイベントが、そのイベントに並行する実行スレッドに定義された場合に継続します。