4.1. ロジックフロー¶
ロジックフローの構成要素と、動作仕様について説明します。
4.1.1. バージョニング(履歴管理)¶
4.1.1.1. バージョン番号¶
コラム
バージョン番号の追加先
注意
制御要素「フロー呼び出し」について
4.1.1.2. バージョンの持つ情報¶
- ロジックフロー図
- ロジックフロー名/カテゴリ
- プロパティ
- マッピング
- フローの入出力値
- 定数値
- フロー内でのみ利用するユーザ定義
注意
期間化情報について
ロジックフローのバージョンでは、期間化の情報は持ちません。
4.1.1.3. バージョン削除¶
4.1.2. 国際化¶
4.1.2.1. 標準表示名¶
4.1.3. フローカテゴリ¶
4.1.3.1. バージョンとカテゴリ¶
4.1.3.2. カテゴリの削除¶
4.1.4. 制御要素¶
開始
フローの開始地点を表す制御要素です。フローは必ずこの要素で開始する必要があります。また、1つのフローに配置できる開始要素は1つのみです。終了
フローの終了地点を表す制御要素です。フローはこの要素かエラー終了で終了する必要があります。エラー終了
フローが異常終了したことを表す要素です。処理がこの要素に到達した場合、ErrorEndEventException がスローされます。分岐
任意の条件で処理を分岐させる制御要素です。指定された条件が満たされた場合は then のルートの処理が実行されます。満たされていない場合は else のルートの処理が実行されます。分岐条件は EL式で記述します。 EL式の記述方法は「EL式」を参照してください。繰り返し
処理の繰り返しを行う制御要素です。指定された繰り返し回数または繰り返し対象の配列数分、処理を繰り返します。ただし、繰り返し条件が指定されている場合は条件を満たしている間のみ繰り返しを行います。繰り返し条件はEL式で記述します。EL式の記述方法は「EL式」を参照してください。コラム
繰り返し対象の取得
繰り返し処理中の該当要素および該当要素番号はセッション内で保持されます。EL式で該当要素を指定する場合は「 ${繰り返し開始要素のエイリアス.item} 」を指定してください。また、 該当要素番号を指定する場合は「 ${繰り返し開始要素のエイリアス.index} 」を指定してください。フロー呼び出し
任意のフローを呼び出す制御要素です。フロー内から別のフローを呼び出します。呼び出されたフローにはフロー呼び出し制御要素の入力パラメータが受け渡されます。呼び出されたフロー内で、呼び出し元フローのパラメータ(定数や各タスクの実行結果)を直接参照することはできません。変数操作
フローに定義した変数に対して、値の代入操作を行う制御要素です。変数の初期化や、他のタスクから取得した値を変数に格納する際にこの制御要素を利用します。空処理
何も行わない制御要素です。フロー上に要素を配置しておくためだけの要素です。空処理は処理は何も行わず、入出力もありません。エラー処理開始
エラー処理フローの開始地点を表す制御要素です。エラー処理フローは必ずこの要素で開始する必要があります。また、1つのフローに配置できるエラー処理開始要素は1つのみです。エラー処理終了
エラー処理フローの終了地点を表す制御要素です。エラー処理フローはこの要素か終了、またはエラー終了で終了する必要があります。コラム
エラー処理フローの終了後の動作仕様
エラー処理フローの最後に配置した要素によって、エラー処理フロー終了後の動作が決定します。- 終了ここでフローは終了します。
- エラー終了ここでフローはエラー終了します。
- エラー処理終了エラー発生タスクの後続タスクから処理を継続できる場合は継続します。処理を継続出来ない場合は、ここでフローはエラー終了します。
4.1.5. タスク¶
汎用タスク
メールの送信、ログ出力といった汎用的な処理を行うタスクです。各タスクの詳しい説明は「汎用タスク」を参照してください。ストレージ操作
intra-mart Accel Platform のStorage サービスAPIを利用してファイルの操作を行うタスクです。各タスクの詳しい説明は「ストレージ操作」を参照してください。基盤機能
intra-mart Accel Platform の基盤機能を利用した処理を行うタスクです。各タスクの詳しい説明は「基盤機能」を参照してください。IMBox
IMBox の各ボックスへメッセージを投稿するタスクです。各タスクの詳しい説明は「IMBox」を参照してください。注意
このタスクを利用する場合は「IMBox」モジュールを含む環境を構築する必要があります。Office365
Office 365のSharePointのファイルサービスを扱うタスクです。各タスクの詳しい説明は「Office365」を参照してください。注意
このタスクを利用する場合は「Office 365 連携」モジュールを含む環境を構築する必要があります。
4.1.5.2. エイリアス¶
注意
4.1.5.3. タスクの利用制限設定¶
- blacklist に設定されたタスクはロジックフロー定義編集画面のパレットに表示されなくなります。
- blacklist に設定されたタスクを含むロジックフローを実行した場合は該当のタスクの実行時にエラーが発生します。
- blacklist に設定されたタスクを含むフロー定義をインポートできなくなります。
4.1.6. 処理フロー¶
セッションの生成を行います。
セッションの生成時にユーザ定義定数やシステム定数といった定数値が設定されます。それぞれの値が設定される変数名については「利用可能な暗黙的な変数」を参照してください。実行時に引数に渡された入力値をセッションに設定します。
入力値をセッション内に保持します。入力値が設定される変数名については「利用可能な暗黙的な変数」を参照してください。IM-Repository定義の入力値の検証
入力設定にIM-Repositoryのエンティティが含まれている、かつ「フロー開始時におけるIM-Repository定義の入力値の検証」 が有効の場合は、入力値が制約を満たすかどうかを検証します。上記に該当しない場合は処理をスキップします。トランザクションの制御
トランザクションの使用が有効かつ呼び出し元でトランザクションが開始されていない場合、トランザクションを開始します。トランザクションの使用が無効になっているか、呼び出し元でトランザクションが開始されている場合は処理をスキップします。開始要素の取得
フロー定義情報から開始要素を取得します。次の要素の取得
開始要素の次に実行される要素を取得します。
次の要素が分岐要素の場合
分岐条件の評価を行い、次に実行される要素の取得を行います。次の要素が繰り返し開始要素の場合
繰り返し対象を取得し、繰り返しを行う場合は次に実行される要素の取得を行います。繰り返しを終了する場合はペアになっている繰り返し終了要素の次に実行される要素の取得を行います。次の要素が繰り返し終了要素の場合
ペアになっている繰り返し開始要素へ戻ります。タスクの実行を行います。
タスクのインスタンスを取得します。
- セッション内にタスクのインスタンスが存在する場合は、そのインスタンスを取得します。
- セッション内にインスタンスが存在しない場合は、新しいインスタンスを生成しプロパティの値を設定します。
タスクのマッピング定義情報、セッション情報を元にマッピングを実行し入力データを生成します。
生成した入力データを引数に受け渡し、タスクを実行します。
タスクの処理が終了後、エイリアスをキーにして戻り値をセッションに設定します。
処理が終了したタスクのインスタンスはセッション内で保持され、繰り返しや分岐で再度同じタスクが呼び出された際に再利用されます。終了要素またはエラー終了要素に到達するまで、次の要素の取得とタスクの実行が繰り返されます。
終了処理を実行します。
終了要素に到達した場合
- 終了要素のマッピング定義情報、セッション情報を元にマッピングを実行し出力データを生成します。
- フロー内でトランザクションを開始していた場合はトランザクションをコミットします。
- 各要素の終了処理を呼び出します。
- 生成した出力データを返却します。
エラー要素に到達した場合
- フロー内でトランザクションを開始していた場合はトランザクションをロールバックします。
- 各要素の終了処理を呼び出します。
- ErrorEndEventException をスローします。
コラム
永久ループの検出
セッション内で各要素が実行される際に実行回数のカウントを行っています。標準では、同じ要素が100回以上呼び出される場合、永久ループが発生している可能性があると判断して例外をスローします。繰り返し処理内の要素については繰り返し終了要素に到達した時点でカウンタを初期化するため、100回を超える繰り返し処理を行ってもエラーになることはありません。
4.1.6.1. 入出力設定¶
4.1.6.2. フロー開始時におけるIM-Repository定義の入力値の検証¶
コラム
- 入力設定にIM-Repository定義のエンティティが含まれるフローをREST APIとして呼び出す場合、各エンティティ項目(辞書項目/ エイリアス)のリクエストパラメータ名、データ型は 「用途」-「データ」で設定した JavaScript の変数名、データ型です。
IM-Repository定義の入力値の検証は、「エンティティデータの検証」タスクで行うことも可能です。
4.1.6.3. トランザクション制御¶
注意
デバッグ機能でのトランザクション制御
ロジックフローのデバッグ機能において、ステップ実行やブレイクポイントを使用して、途中のエレメントで処理を一時停止できます。処理を一時停止した場合、トランザクションが使用されている場合でも、それまでのトランザクションはコミットされます。従って、途中まで実行されたエレメントが行った変更は、元に戻りませんので注意してください。
4.1.6.4. 例外処理¶
エラーが発生したタスクのプロパティ「エラーハンドリング」-「エラーでも処理を継続する」設定がONの場合
エラー処理フローの有無に関わらず、処理を継続します。エラーが発生したタスクのプロパティ「エラーハンドリング」-「エラーでも処理を継続する」設定がOFF、またはエラー発生箇所が「エラーハンドリング」設定を持たない場合
エラー処理フローが設定されている場合
エラー処理フローを実行します。実行後の動作はエラー処理フローの最後に配置した要素により決定します。詳細は「制御要素」 - 「エラー処理終了」のコラムを参照してください。※エラー処理フロー実行中にエラーが発生した場合は、例外処理は行わずにエラーで終了します。エラー処理フローが設定されていない場合
例外処理は行わずにエラーで終了します。
コラム
フロー呼び出し先のフローでエラーが発生した場合の例外処理について
「フロー呼び出し」 で指定したフローの実行中にエラーが発生した場合の動作仕様は以下の通りです。
呼び出し先フローで例外処理が行われて、呼び出し先フローが正常に終了した場合呼び出し元フローの処理を継続します。 呼び出し先フローがエラーで終了した場合(エラー処理フローを実行した結果、エラー終了した場合も含む)上記の仕様通りに例外処理が行われます。 「エラーが発生したタスク」が 「フロー呼び出し」 です。
4.1.7. データ¶
4.1.7.1. データ型¶
IM-LogicDesigner では以下のデータ型が利用可能です。
型名 | タイプID | 説明 |
---|---|---|
String | string | 文字列 |
Boolean | boolean | 真偽値 |
Byte | byte | 1バイト整数(-128~127) |
Character | character | 2バイト文字データ(u0000~uffff) |
Short | short | 2バイト整数(-32768~32767) |
Integer | integer | 4バイト整数(-2147483648~2147483647) |
Long | long | 8バイト整数(-9223372036854775808~9223372036854775807) |
Float | float | 4バイト単精度浮動小数点数 |
Double | double | 8バイト倍精度浮動小数点数 |
BigDecimal | bigdecimal | 任意精度の符号付き小数 |
BigInteger | biginteger | 任意精度の符号付き整数 |
Calendar | calendar | 日付操作用カレンダ |
Date | date | 日付 |
Locale | locale | ロケール |
TimeZone | timezone | タイムゾーン |
IM DateTime | imdatetime | 日付 |
IM Duration | imduration | 期間 |
SQL Date | sqldate | java.sql.Dateに該当する日付型 |
SQL Timestamp | sqltimestamp | java.sql.Timestampに該当する日付型 |
SQL Clob | sqlclob | java.sql.Clobに該当する型 |
Binary | binary | バイナリデータ |
Storage | storage | intra-mart Accel Platform 上で利用可能なStorageを表現した型 |
Map | map | java.util.Mapに相当する型 |
IM-Repository Entity | imr_entity | IM-Repository のエンティティ |
Any | any | 不明な型 |
4.1.7.1.1. 構造体¶
4.1.7.1.3. Map型およびそのキー¶
4.1.7.1.4. IM-Repository のエンティティ¶
4.1.7.2. ユーザ定義定数値¶
4.1.7.4. 共通定数値¶
4.1.8. マッピング¶
4.1.8.1. マッピングルール¶
4.1.8.2. マッピングの流れ¶
マッピングルールを以下の条件でソートします。
マッピング元が複数存在する場合、マッピング元に含まれる配列/リストの要素数が一番多いマッピング元をソート条件に利用します。マッピング元が存在しない場合には、含まれる配列/リスト要素数を0として扱います。マッピング元に含まれる配列/リスト要素数が多い順にソートを行います。配列/リストの要素数が同じ数である場合には、マッピング元の階層が浅い順にソートが行われます。ソートした順序でマッピングルールを適用します。
マッピング元と、マッピング先に含まれる配列/リスト要素の数を取り出します。
マッピング元、マッピング先に含まれる配列/リスト要素の数が一致しない場合には要素番号0が利用されます。
マッピング元の値を取り出します。
マッピング元となる値を取り出します。以降、階層中に配列/リストが含まれている場合には要素数分値の取り出し、ルールの適用を行います。配列/リスト要素は、階層が深い順に要素番号をインクリメントしながら取り出しが行われます。マッピング先に配列/リストが含まれている場合、それぞれの要素番号を決定します。
マッピング元の配列/リスト要素の数が、マッピング先の配列/リスト要素よりも多い場合には、マッピング元の配列/リスト要素の階層が深い順にマッピング先の配列/リスト要素の要素番号として扱われます。マッピング元の配列/リスト要素の数より、マッピング先の配列/リスト要素が多い場合には、マッピング元の配列/リスト要素の階層が深い順にマッピング先の配列/リスト要素の要素番号を決定し、不足分となる配列/リスト要素の要素番号は全て0を利用します。マッピング元にマッピング関数が含まれている場合、マッピング関数の実行を行います。
マッピング関数の引数の確認を行い、マッピング関数の引数が更にマッピング関数の結果であった場合には再帰的にマッピング関数の実行を行います。マッピング関数の引数のデータ型と、マッピング関数が受け付けるデータ型を比較し、変換を行います。マッピング関数の実行結果を以降のマッピング元の値として利用します。マッピング元のデータ型とマッピング先のデータ型を比較し、変換を行います。
マッピング元とマッピング先のデータ型が一致した場合には変換は行いません。マッピング元とマッピング先のデータ型が一致している場合、マッピングは参照渡しで行われます。マッピング元とマッピング先のデータ型が一致していない場合、データ型の変換が行われます。データ型の変換に関しては、後述する「データ型」の変換を参照してください。マッピング元、マッピング先どちらかが配列/リスト要素であり、対になるデータが配列/リスト要素ではない場合には、配列の要素番号0が利用され変換が行われます。マッピング元の値をマッピング先の値に反映させます。
マッピング元の階層構造に配列/リスト要素が含まれず、マッピング先に配列要素が含まれている場合、かつ、マッピング先の値が存在する場合
マッピング先に配列/リストが含まれている場合、かつマッピング元に配列/リストが含まれていない場合には、マッピング元の値をマッピング先の配列/リスト要素全てに適用します。上記以外の場合
マッピング元の値をマッピング先に反映します。マッピング先の階層要素の上位オブジェクトの値が存在しない場合には、上位オブジェクトの生成が行われます。マッピング先の階層要素に含まれる配列/リスト要素の要素数が不足している場合には、配列/リスト要素の追加が行われます。マッピングルールの定義に何らかの不備があり、マッピング先の階層情報の取得が行えなかった場合には、値の反映は行われません。マッピングルールの適用を繰り返します。
マッピング元の階層に配列/リスト要素が含まれている場合、要素番号をインクリメントしマッピングルールの適用を継続します。マッピング元の階層に配列/リスト要素が含まれていない、または配列/リスト要素を全て適用した場合にはマッピングルールの適用を終了します。
注意
コラム
4.1.8.3. データ型の変換¶
4.1.9. ジョブ¶
4.1.9.1. ジョブクラス¶
jp.co.intra_mart.foundation.logic.job.LogicFlowExecutorJob
コラム
ジョブスケジューラでの利用
4.1.9.2. パラメータ¶
パラメータ | キー名 | 必須/任意 | 説明 |
---|---|---|---|
フローID | flow_id | 必須 | ジョブクラスを利用して実行するロジックフローのフローIDを指定します。 |
ロジックフローの入力値 | (実行するフローにより可変) | 任意 | 実行するロジックフローの入力値を指定します。
キー名は、実行するロジックフローが要求する入力値名を指定してください。
|
注意
パラメータを利用した入力値指定時の注意点
入力値は全て文字列(String型)として解釈されます。実行するロジックフローの入力値が文字列以外の場合、動作は保証されません。 パラメータは階層化されていない入力値のみ指定可能です。「構造体」、および、配下の値はパラメータを利用して入力値として指定することはできません。