特定の条件を満たすロジックフローを作成したい
この記事では、シンプルなロジックフローの作成から一歩進んで、より広い業務領域に対応した処理のロジックフローを作成する方法を紹介します。
IM-LogicDesignerでは、フローに課したい条件に合わせて、さまざまな制御要素やタスクを用意しています。制御要素やタスクを組み合わせることで、複雑なロジックフローを作成することも可能です。どのようなフローを作成できるのか、条件別にやりたいことの一覧から探してみましょう。
条件別にロジックフローを作成する
IM-LogicDesignerでは、フローの論理的な流れや構造を制御するための制御要素と、フロー内で実行される具体的な処理を表すタスクを組み合わせながら、ロジックフローを完成させます。制御要素やタスクの種類や特徴を理解することで、より広い業務領域に対応したロジックフローが構築できるようになります。
フロー実行時の処理の流れ
ロジックフローの実行開始から終了までの間に行われる、制御要素の取得やタスクの実行といった一連の流れを確認することで、制御要素やタスクについて理解が深まり、フローが構築しやすくなります。
指定した条件で分岐するフローを作りたい:「分岐」要素
指定した条件に基づき真か偽かを評価し、それに応じて次に実行する処理を設定したい場合は、「分岐」要素を使用します。処理1に対して、if-then-elseによる条件分岐を行い、Trueの場合の処理2-aとFalseの場合の処理2-bをそれぞれ設定します。
<設定手順>
- ロジックフロー内の適切な場所に「分岐」要素を配置する
- 条件を設定する(条件式、入出力設定など)
- TrueとFalseにそれぞれ次に実行されるエレメント(制御要素またはタスク)を配置する
<設定例>
ログを出力した後に、テキストメールを送信するフローを例に、上記の図と併せて確認してみましょう。「ログ出力」タスクと「テキストメール送信」タスクは、どちらも「汎用タスク」カテゴリに含まれています。
開始
↓
処理1
↓
分岐
↓
分岐条件
↓
↓
処理2-a
↓
↓
処理2-b
↓
↓
終了
「開始」要素を配置する
「ログ出力」タスクを配置する
「分岐」要素を配置する
ロジックフローの入力値に、分岐を決定するフラグを受け取るように設定する
「テキストメール送信」タスクを配置する。フラグがTrueの場合、メールを送信する
タスクを配置しない。フラグがFalseの場合、メール送信をスキップする
「終了」要素を配置する
作成したフローを実行すると、「ログ出力」タスクから出力結果を得た後、分岐条件をもとに「テキストメール送信」の有無を処理していることがわかります。
フラグを条件に分岐処理を行う
チュートリアルガイドでは、上記で説明したログの出力とテキストメールを送信するフローを作成することができます。条件式では、EL式を使って定義します。あわせて覚えておきましょう。
「分岐」要素の基本を理解したら、ワークフローを用いた少し複雑なフローの作成例について、下記のCookBookから確認してみましょう。この例では、申請者の役職情報を分岐条件に設定し、それに基づいて次の処理対象者を振り分けています。
入力値を条件に分岐処理を行う
CookBookでは、申請ワークフローの処理対象者を設定するフローを作成することができます。IM-Workflowのパラメータを使用したり、ユーザ定義タスクを設定したりするなど、応用的な内容も含みますが、「分岐」要素の利用例として確認しておきましょう。
同じ処理を繰り返し実行するフローを作りたい:「繰り返し」要素
一定の条件が満たされるまで、あるいは指定された回数だけ、同じ処理を繰り返し実行する処理を設定したい場合は、「繰り返し」要素を使用します。「繰り返し」要素に設定した条件がTrueの場合は、条件がFalseになるまで、処理2を繰り返し実行します。
繰り返しの設定は、以下のような方法があります。
- 繰り返し回数:入力した回数をもとに処理を制御する
- 繰り返し条件:繰り返し回数をフローの入力値として受け取り、その条件をもとに処理を制御する
- 繰り返し対象:繰り返し処理を行う対象を指定し、処理中にその値を利用する
<設定手順>
- 繰り返し処理を行うタスクを配置する
- 「繰り返し開始」要素と「繰り返し終了」要素で対象のタスクを囲む
- 「繰り返し開始」要素に条件を設定する(繰り返し回数、繰り返し条件、繰り返し対象など)
<設定例>
ログの出力とテキストメールの送信を繰り返すフローを例に、上記の図と併せて確認してみましょう。
「ログ出力」タスクと「テキストメール送信」タスクは、どちらも「汎用タスク」カテゴリに含まれています。
開始・処理1
↓
繰り返し
↓
繰り返し条件
↓
処理2-1
↓
処理2-2
↓
繰り返し開始
↓
↓
繰り返し終了
↓
↓
終了・処理3
「開始」要素を配置する
「繰り返し」要素を配置する
繰り返し回数を「3」に設定する
「ログ出力」タスクを配置する
「テキストメール送信」タスクを配置する
繰り返し回数が3回未満(条件がTrue)の場合、処理2を繰り返す
繰り返し回数が3回目以降(条件がFalse)の場合、繰り返し処理を終了する
「終了」要素を配置する
作成したフローを実行すると、定義された繰り返し回数に応じて、「ログ出力」と「テキストメール送信」を繰り返し処理することがわかります。
指定した条件または回数で繰り返し処理を行う
チュートリアルガイドでは、上記で説明したログ出力とテキストメールの送信を繰り返すフローを作成することができます。繰り返し回数の設定以外にも、繰り返し条件の定義や繰り返し対象の指定方法についても説明しています。
「繰り返し」要素の基本を理解したら、ジョブを利用してタスクを繰り返し実行するフローの作成例について、下記のCookBookから確認してみましょう。この例では、取得した完了案件の数だけ繰り返し処理を行うように条件を設定しています。
対象を指定して繰り返し処理を行う
CookBookでは、申請日から一定期間経過した完了案件をアーカイブするフローを作成することができます。IM-BISのカテゴリからタスクを設定しますが、「繰り返し」要素の利用例として確認しておきましょう。
「分岐」要素と「繰り返し」要素で利用するEL式とは?
フローに配置した「分岐s要素や「繰り返し」要素では、条件式にEL式(Expression Language)を用いることができます。 IM-LogicDesignerでは、用途に応じてあらかじめ利用可能な暗黙的な変数を定義しています。
EL式を用いた定義例
IM-LogicDesigner上で取り扱う値を条件に用いる場合を想定して、EL式の指定方法について説明しています。
フロー内から別のフローを呼び出したい:「フロー呼び出し」要素
実行中のフローから別のフローを呼び出して、実行するように設定したい場合は、「フロー呼び出し」要素を使用します。再利用可能なフローを構築し、複雑なビジネスロジックをモジュール化することができます。
<設定手順>
- ロジックフロー内の適切な場所に「フロー呼び出し」要素を配置する
- 呼び出したいフローのIDを指定する
- 呼び出したフローと同じ入出力値を設定する
<設定例>
あるフローを実行中に作成済みの別のフローを例に、上記の図と併せて確認してみましょう。
開始・処理A-1
↓
フロー呼び出し
↓
フローIDの設定
↓
↓
処理A-1から渡す値
↓
処理A-2に渡す値
↓
↓
終了・処理A-2
「開始」要素を配置する
「フロー呼び出し」要素を配置する
呼び出したいフローIDを設定する。処理B-1には「ログ出力」タスクが、処理B-2には「テキストメール送信」タスクがそれぞれ設定されている。
呼び出し先のフローに必要な入力値を設定する
呼び出し先のフローが終了した後、呼び出し元のフローに戻す出力値を設定する
「終了」要素を配置する
作成したフローを実行すると、指定したフローが呼び出され、呼び出し先のロジックフローが実行されたことがわかります。
別のフローの呼び出し処理を行う
チュートリアルガイドでは、上記で説明した作成済みの別のフローを呼び出すフローを作成することができます。「フロー呼び出し」要素や「終了」要素のマッピング設定についても押さえておきましょう。
フロー内に共通のエラー処理を設定したい:「エラー処理」要素
フロー内に共通のエラー処理を設定したい場合は、「エラー処理」要素を使用します。これにより、たとえば処理1~2ごとにエラーハンドリングの設定をしなくても、「エラー処理」要素を設定することで、エラーの種類や発生場所に関係なく一貫した処理3を実行できます。
<設定手順>
- 「エラー処理開始」要素を実行フローとは別の場所に配置する
- エラー発生時に実行するタスクを配置する
- エラー処理後の対応に適した制御要素を配置する
エラー処理後の対応について
・フローの実行処理を継続したい場合:「エラー処理終了」要素を配置
(例:処理1→エラー処理3→処理2と進み、次のタスクを実行する)
・フローの実行処理をエラー終了したい場合:「エラー終了」要素を配置
(例:処理1→エラー処理3→エラー終了と進み、フローを終了させ、例外クラスをスローする)
・フローの実行処理を終了したい場合:「終了」要素を配置
(例:処理1→エラー処理3→終了と進み、例外クラスをスローせずにフローを終了させる)
<設定例>
二つのタスクのいずれかでエラーが発生した後、エラー処理フローでメールを送信し、元のフローの実行処理に戻るフローを例に、上記の図と併せて確認してみましょう。
開始
↓
処理1
↓
処理2
↓
エラー処理開始
↓
処理3
↓
エラー終了処理
↓
終了
「開始」要素を配置する
フロー実行処理である一つ目の「ユーザ要素」タスク(task1)を配置する
フロー実行処理である二つ目の「ユーザ要素」タスク(task2)を配置する
「エラー処理開始」要素を配置する
エラー処理として「テキストメール送信」タスクを配置
「エラー処理終了」要素を配置する
「終了」要素を配置する
作成したフローを実行すると、エラーが発生した際にエラー処理フローが実行されます。
エラー処理フローを設定する
チュートリアルガイドでは、上記で説明したエラー処理フローの一連の流れを作成することができます。
フロー内で変数を活用したい:「変数操作」要素
フロー内で変数を用いて各タスク間でデータを受け渡したい場合は、「変数操作」要素を使用します。たとえば、処理1で取得した値が処理2まで保持できなかったり、処理2で別の値に上書きされてしまったりする場合でも、変数に処理1の値を格納することで、処理2でも同じ値を利用できます。
暗黙的な変数について
IM-LogicDesignerでは、あらかじめ利用できる暗黙的な変数が定義されています。暗黙的な変数とは、特定の環境で自動的に提供される変数のことで、ユーザが直接定義する必要はなく、そのまま使用できます。
・変数 ・アカウントコンテキスト ・外部ユーザコンテキスト
・セッション情報 ・処理結果情報 ・ユーザコンテキスト
<設定手順>
- 「変数設定」画面から変数を定義する
- 変数に値を代入するため、「変数操作」要素を配置する
- 具体的な変数の操作を設定するため、マッピング設定を行う
<設定例>
ロジックフローの実行ユーザ名を変数として定義し、その値を代入してログに出力するという一連のフローを例に、上記の図と併せて確認してみましょう。
開始・処理1
↓
変数操作
↓
変数定義
↓
↓
変数設定
↓
↓
処理2
↓
↓
終了
「開始」要素を配置する
「変数操作」タスクを配置する
実行ユーザ名を変数として定義するため、文字列の変数を作成する
マッピング設定で、ユーザコンテキストを入力値に追加し、変数に代入する
「ログ出力」タスクを配置する。変数を利用してログに出力するため、マッピング設定を行う
「終了」要素を配置する
作成したフローを実行すると、変数が正しく動作されたことがわかります。
ユーザコンテキストを表す変数を活用する
チュートリアルガイドでは、上記で説明したユーザコンテキストを表す変数を活用した一連のフローを作成することができます。また、ユーザの切り替えや繰り返し処理への適用といった応用的な活用方法についてもふれています。
複数の制御要素を組み合わせた活用例
これまで紹介してきた制御要素を組み合わせることで、より複雑なロジックフローを作成できます。たとえば、「分岐」「繰り返し」「変数操作」といった要素を組み合わせると、ワークフローの自動承認のような処理を作成できます。
制御要素の基本を理解したら、複数の制御要素を組み合わせた複雑な構成をもつフローの作成例について確認してみましょう。この例では、「分岐」「繰り返し」「変数操作」といった要素を複数使用しています。
複数の制御要素を組み合わせる
CookBookでは、処理済みのユーザが自動で承認されるフローを作成できます。このフローは、配置するタスクや制御要素が多く、複雑な構成になっています。「分岐」要素や「繰り返し」要素などの復習を兼ねて、「変数操作」要素について確認してみましょう。
まとめ
IM-LogicDesignerの制御要素を活用すると、より広い業務領域に対応した処理のロジックフローを作成できます。アプリケーションの目的や用途によっては、制御要素やタスクを組み合わせて、複雑なロジックフローを作成するようなケースも出てくるでしょう。そのためにも、制御要素やタスクの種類や特徴について把握し、適切に使いこなせるようになることをおすすめします。
intra-martでは、IM-LogicDesignerをもっと知っていただくためにマニュアルやコンテンツなどを豊富にご用意しています。IM-LogicDesignerの機能を最大限に発揮させるためにも、ぜひご活用ください。