複雑な処理を行うロジックフローを作成したい

この記事では、ユーザ定義(ユーザ定義タスク)を利用して、標準タスクでは実現できない複雑な処理をロジックフローに組み込む方法を紹介します。

IM-LogicDesignerでは、あらかじめ用意されている標準タスクを組み合わせて、さまざまな処理を実現できます。一方で、標準タスクに必要な処理が用意されていない場合や、複数のタスクを組み合わせるより、独自の処理としてまとめたほうが良い場合などは、ユーザが独自に処理を定義することができます。

ユーザ定義を作成してロジックフローで利用するまでの流れと、用途に応じたユーザ定義の種類を確認していきましょう。

ユーザ定義(ユーザ定義タスク)とは?

IM-LogicDesignerでは、ロジックフローを構成するタスクとして、標準でさまざまな処理が用意されています。一方で、標準タスクだけでは実現できない処理や、独自の処理をタスクとして利用したい場合は、ユーザ定義(ユーザ定義タスク)を使用します。ユーザ定義では、JavaScriptやSQL、REST APIなどを利用して処理を定義できます。作成したユーザ定義は、標準タスクと同じようにロジックフローに配置して利用できます。

たとえば、次のような処理をユーザ定義として作成できます。

  • 標準タスクに必要な処理が用意されていない
  • 複数のタスクを組み合わせるより、独自の処理としてまとめたほうがよい
  • JavaScriptやSQL、REST APIなどを利用して処理を実装したい
  • ExcelやCSVなどのファイルを処理したい

ユーザ定義には、処理内容に応じてさまざまな種類があります。まずはユーザ定義を作成してロジックフローで利用するまでの流れを確認しましょう。

ユーザ定義の作成から利用までの流れ

ユーザ定義をロジックフローで利用するには、ユーザカテゴリの作成 → ユーザ定義の作成 → アイコンの設定 → ロジックフローへの配置という流れで設定します。

Step. 1 ユーザカテゴリを作成する

まず、ユーザ定義を管理・分類するためのユーザカテゴリを作成します。ユーザカテゴリは、ユーザ定義の用途や種類などに応じて分類すると、ロジックフローを作成するときに目的のユーザ定義を見つけやすくなります。

既存のユーザカテゴリを利用する場合は、新しく作成する必要はありません。たとえば、環境構築時にサンプルインポートを実行すると、自動的に「Sample」というユーザカテゴリが作成されます。サンプルのユーザ定義を確認したり、共有用のユーザ定義を配置したりする場合に利用できます。

Step. 2 ユーザ定義を作成する

次に、実現したい処理に応じてユーザ定義を作成します。ユーザ定義では、次のような処理をタスクとして定義できます。

  • JavaScript:JavaScriptを利用して独自の処理を実行する
  • REST:REST APIを呼び出す
  • SQL:2Way-SQLを利用してデータベースを操作する
  • Database Fetch:データベースから大量のデータを効率的に取得する
  • CSV Fetch:CSVファイルから大量のレコードを読み込む
  • Excel入力/Excel出力:Excelファイルを読み込み・出力する
  • XML解析/HTML解析:XMLやHTMLから必要な要素を取得する
  • テンプレート:入力値をテンプレートに埋め込んで文字列を生成する

各ユーザ定義の詳細な作成方法については、この記事内の「ユーザ定義の種類と特徴」を参照してください。

Step. 3 アイコンを設定する

作成したユーザカテゴリとユーザ定義には、アイコンを設定できます。アイコンを設定すると、「ロジックフロー定義編集」画面のパレットメニューでユーザ定義を見つけやすくなります。また、ロジックフローに配置したときにも、処理の目的を把握しやすくなります。

アイコンの設定は必須ではありません。アイコンを設定しない場合は、標準アイコンの「 (im_arrow_270)」が表示されます。

Step. 4 ユーザ定義を配置する

作成したユーザ定義を、ロジックフローに配置します。Step. 3で設定したアイコンは、タスクとタスク種別に表示されます。

<仕様に関する資料>

上記で説明したStep. 1~4の設定項目について、詳しくは仕様書でも確認できます。

ユーザ定義の種類と特徴

ユーザ定義には、JavaScript、REST、SQL、CSV、Excelなど、さまざまな種類があります。ここでは、「どのような処理をしたいときに、どのユーザ定義を利用するか」という観点で紹介します。

Case 1 プログラムを実行する処理を定義したい

JavaScriptを利用して独自の処理を実行したい場合や、REST APIを呼び出したい場合は、次のユーザ定義を使用します。

ユーザ定義(JavaScript)

JavaScriptを利用して、タスクの処理内容を定義します。タスクの入出力値とJavaScriptの関数functionの引数や戻り値を紐づけることで、独自の処理をロジックフローから実行できます。既存のJavaScript資産を利用した処理をロジックフローに組み込みたい場合にも利用できます。

ユーザ定義(REST)

REST APIを利用した処理をタスクとして定義します。タスクの入出力値とREST APIのパラメータ・レスポンスを紐づけることで、外部サービスや他のシステムが提供するREST APIなどをロジックフローから呼び出せます。また、別環境のIM-LogicDesignerにあるフロールーティングを実行することもできます。

Case 2 データベースやCSVを操作する処理を定義したい

データベースを操作したり、大量のデータを効率的に取得したりする場合は、次のユーザ定義を使用します。

ユーザ定義(SQL)

SQLを利用して、データベースに対するデータ操作を定義します。2Way-SQLを利用して、次のような処理を実現できます。

クエリ種別

  • SELECT:データを取得する
  • INSERT:データを登録する
  • UPDATE:データを更新する
  • DELETE:データを削除する

また、テナントデータベースだけでなく、シェアードデータベースを対象とした処理も定義できます。

データベース種別

  • TENANT(テナントデータベース):intra-mart内にあるテナント専用のデータベース
  • SHARED(シェアードデータベース):intra-mart外にある外部システムのデータベース

ユーザ定義(Database Fetch)

データベースから大量のデータを取得する場合に使用します。SELECT文によるデータ取得処理を定義でき、フェッチサイズを指定することで、一度に取得するデータ量を調整できます。大量のデータを扱う場合など、データを効率的に取得・処理したいときに適しています。

ユーザ定義(SQL)のSELECT文との主な違いは、フェッチサイズを指定できる点です。フェッチサイズを設定することで、一度に取得するデータの件数を調整し、パフォーマンスを最適化できます。

ユーザ定義(CSV Fetch)

ユCSVファイルに保存された大量のレコードを読み込み、処理する場合に使用します。CSVファイルとタスクの入力値を紐づけ、CSVのレコードを順次読み込んで処理できます。これにより、サイズの大きいCSVファイルでも、効率的にデータを処理することができます。

Case 3 特定の要素を取得する処理を定義したい

Excelファイルの入出力や、XML・HTMLから特定の要素を取得する場合は、次のユーザ定義を使用します。

ユーザ定義(Excel入力)

Excelファイルから、指定したシートやセルの値を読み込みます。Excelファイルに保存されたデータをロジックフローの処理に利用したい場合などに使用します。

ユーザ定義(Excel出力)

ロジックフローの入力値をExcelファイルに書き出します。指定したシートやセルに値を出力し、Excelファイルとして保存できます。

ユーザ定義(XML解析)

XMLファイルから、指定した要素の値を取得します。ルートから要素を指定する方法や、XPathを使用して取得する要素を指定する方法があります。

ユーザ定義(HTML解析)

HTMLファイルから、指定した要素の値を取得します。ルートから要素を指定する方法や、CSSセレクタを使用して取得する要素を指定する方法があります。

Case 4 文字列を生成する処理を定義したい

入力値をテンプレートに埋め込み、メール本文やHTMLなどの文字列を生成したい場合は、「ユーザ定義(テンプレート)」を使用します。

ユーザ定義(テンプレート)

文字列テンプレートに入力値を埋め込んで、動的に文書を生成します。テンプレートには、FTL(FreeMarker Template Language)を利用できます。たとえば、入力されたユーザ情報をメール本文に埋め込むなど、決まった形式の文書を入力値に応じて生成したい場合に適しています。

まとめ

IM-LogicDesignerでは、標準タスクだけでは実現しにくい処理も、ユーザ定義としてタスクを作成することでロジックフローに組み込むことができます。JavaScriptやREST APIを利用した処理だけでなく、データベース、CSV、Excel、XML、HTMLなど、目的に応じたユーザ定義を利用できます。まずは実現したい処理に合ったユーザ定義を選び、必要な処理をタスクとして定義してみましょう。

intra-martでは、IM-LogicDesignerをもっと知っていただくためにマニュアルやコンテンツなどを豊富にご用意しています。IM-LogicDesignerの機能を最大限に発揮させるためにも、ぜひご活用ください。