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

公開日: 2024-11-29 / カテゴリ: IM-LogicDesigner

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

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

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

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

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

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

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

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

ユーザ定義の概要

ユーザ定義の目的や種類など、基本的な仕様についてはチュートリアルガイドを参照してください。

IM-LogicDesignerチュートリアルガイド - 5.4.1.ユーザ定義(ユーザ定義タスク)とは

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

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

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

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

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

ユーザカテゴリを新規作成する

ユーザカテゴリ情報には、フローカテゴリIDとフローカテゴリ名を入力します。フローカテゴリ名は多言語に対応しています。

IM-LogicDesignerチュートリアルガイド - 5.4.2. ユーザカテゴリ

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

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

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

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

ユーザ定義の共通設定

すべてのユーザ定義に共通する設定について確認できます。これらの設定項目や入出力値の設定は、ユーザ定義を作成する際に必ず行うため、概要を把握しておきましょう。

IM-LogicDesigner ユーザ操作ガイド - 6.3. ユーザ定義編集-共通設定

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

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

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

アイコンを設定する

ユーザカテゴリの用途に合わせたアイコンを設定した後、ユーザ定義の目的に適したアイコンを設定します。それぞれのアイコンを設定した後、パレットの表示を確認してみましょう。

IM-LogicDesignerチュートリアルガイド - 5.4.15. ユーザカテゴリ、および、ユーザ定義へのアイコン設定方法

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

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

ユーザ定義を配置する

ユーザ定義は、標準タスクと同じようにパレットメニューから選択して配置できます。また、ユーザ定義にはバージョン管理の仕組みがあります。ユーザ定義を更新した場合など、ロジックフローに配置されるバージョンについて確認しておきましょう。

IM-LogicDesignerチュートリアルガイド - 5.4.14. ユーザ定義の利用方法

<仕様に関する資料>

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

ユーザ定義の仕様

ユーザ定義の構成要素や動作仕様について確認できます。IM-LogicDesignerが標準で用意しているアイコン以外に、オリジナルのアイコンを使用したい場合は、画像の種類やサイズなどの仕様を確認してから、画像を準備しましょう。

IM-LogicDesigner 仕様書 - 4.2. ユーザ定義タスク

ユーザ定義の種類と特徴

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

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

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

ユーザ定義(JavaScript)

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

JavaScriptを利用したユーザ定義

JavaScriptでユーザ定義を行う際、JavaScriptのコードや入出力値といった初期サンプルがあらかじめ定義されています。このサンプルをもとに、実現したい処理に合わせて編集していきましょう。

IM-LogicDesignerチュートリアルガイド - 5.4.4. ユーザ定義-JavaScript

ユーザ定義(REST)

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

RESTを利用したユーザ定義

仮想のサービス提供者とREST APIを想定して、仮想サービスにアクセスするタスクの処理を実装する流れを確認できます。参考情報では、より高度なREST APIの設定方法についても説明しています。

IM-LogicDesignerチュートリアルガイド - 5.4.5. ユーザ定義-REST

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

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

ユーザ定義(SQL)

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

クエリ種別

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

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

データベース種別

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

SQLを利用したユーザ定義

テナントデータベースへのアクセスを想定して、クエリ種別ごとにユーザ定義を設定する方法について確認できます。

IM-LogicDesignerチュートリアルガイド - 5.4.3. ユーザ定義-SQL(2WaySQL)

ユーザ定義(Database Fetch)

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

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

SQL(SELECT文)を利用したユーザ定義

テナントデータベースへのアクセスを想定して、SQL(2WaySQL)のSELECT文を利用した設定方法について確認できます。ユーザ定義(SQL)とユーザ定義(Database Fetch)の違いについても、押さえておきましょう。

IM-LogicDesignerチュートリアルガイド - 5.4.6. ユーザ定義-Database Fetch

ユーザ定義(CSV Fetch)

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

CSVファイルを対象としたユーザ定義

シンプルな構造を持つCSVファイルを例に、CSVのフォーマット情報の設定や処理設定などについて確認できます。

IM-LogicDesignerチュートリアルガイド - 5.4.7. ユーザ定義(CSV Fetch)

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

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

ユーザ定義(Excel入力)

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

Excelファイル(入力)を対象としたユーザ定義

Excelファイルから取得したいシートやセルを指定したり、セルを読み込む範囲を指定したりする方法について確認できます。この際、セルのデータ型とユーザ定義(Excel入力)で指定したデータ型が一致するように注意してください。

IM-LogicDesignerチュートリアルガイド - 5.4.9. ユーザ定義-Excel入力

ユーザ定義(Excel出力)

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

Excelファイル(出力)を対象としたユーザ定義

出力した値を格納するExcelファイルのシートやセルを指定したり、セルの範囲を指定したりする方法について確認できます。

IM-LogicDesignerチュートリアルガイド - 5.4.10. ユーザ定義-Excel出力

ユーザ定義(XML解析)

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

XMLファイルを対象としたユーザ定義

アカウント情報のXMLファイルを使用し、アカウントデータを取得する方法について確認できます。

IM-LogicDesignerチュートリアルガイド - 5.4.11. ユーザ定義-XML解析

ユーザ定義(HTML解析)

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

HTMLファイルを対象としたユーザ定義

サンプルのHTMLファイルを使用し、特定の要素を取得する方法について確認できます。

IM-LogicDesignerチュートリアルガイド - 5.4.12. ユーザ定義-HTML解析

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

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

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

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

テンプレートを利用したユーザ定義

テンプレートでFTLを利用してユーザ定義を行う場合、利用頻度が高い構文(文字列の置換・繰り返し・条件分岐・エスケープ処理)が初期サンプルにあらかじめ定義されています。このサンプルをもとに、実現したい処理に合わせて編集していきましょう。

IM-LogicDesignerチュートリアルガイド - 5.4.8. ユーザ定義-テンプレート

まとめ

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

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