記事
· 2023年6月2日 6m read

任意のWebアプリから呼び出せるワークフロー用 REST API の使い方

開発者の皆さん、こんにちは!

この記事では、ワークフローコンポーネントを使ってみよう!~使用手順解説~ でご紹介したユーザ操作画面(ユーザポータル)を任意のWebアプリに変更する際に便利な REST API の使用方法をご紹介します。

ワークフロー用 REST APIですが、開発者コミュニティのサンプル公開ページ:Open Exchange に公開されているAPIでどなたでも自由にご利用いただけます。

Open Exchangeの検索ボックスに「Workflow rest」と入力すると出てきます。EnsembleWorkflow が対象のサンプルです。

ちなみに、2023年6月2日時点で724のアプリケーションが公開されているようです👀

以下の内容もぜひご確認ください。

EnsembleWorkflow のページに移動したらボタンをクリックするとサンプルがあるGitリポジトリに移動します。

InterSystems Package Manager(IPM)でもインストールできますが、この記事ではGitリポジトリから入手する方法で記載しています。

リポジトリに移動すると、isc/wf/REST.clsクラスが確認できます。このクラスをお手元のIRISにインストールし、RESTのエンドポイント(=ウェブアプリケーションパスの設定)を作成したら利用できます。

以降の説明では、お手元のIRISにこのクラスをインポートした後の手順をご紹介します。

クラス定義のインポート方法については、1つ前の記事「ワークフローコンポーネントを使ってみよう!~使用手順解説~」の 4) サンプルのインポート をご参照ください。

この後の説明は、「システム連携の自動的な流れの中にユーザからの指示を介入できる「ワークフローコンポーネント」のサンプル」 の手順に沿って作成したワークフロータスクを処理できる環境があることを前提としています。

 

サンプルをインポートすると「isc.wf.REST」の名称でクラスがインポートされます。このクラス名を使用してRESTのエンドポイントを作成します。

IRISの管理ポータルを開きます(ウェブサーバ名、ポート番号は環境に合わせてご変更ください)👉 http://localhost:52773/csp/sys/UtilHome.csp

管理ポータル > [システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]  に移動します。

ボタンをクリックし、新しいウェブ・アプリケーションを作成します。

以下の項目を設定します。

  • 名前」にエンドポイントのパスを指定します。例では、/wfsample としています。(/ を先頭につけ忘れないようにしてください)
  • ネームスペース」にクラス定義をインポートしたネームスペースを指定します。例では、USER を選択しています。
  • REST」の「ディスパッチ・クラス」にインポートしたクラス名を指定します。例では、isc.wf.REST を指定しています。
  • セキュリティの設定の「許可された認証方法」を「パスワード」のみに変更します。
    • ワークフローユーザ名でログインが必要となりますので、パスワードのみにします。

設定が完了したら、画面上にある保存ボタンをクリックします。

保存後表示される「アプリケーション・ロール」タブを選択し、このパスを通過できたときに付与されるロールを設定します。

適切なロールを事前に作成し追加するほうが適切ですが、以下の例では事前定義ロールの%Allを指定する例でご紹介します。

  1. 利用可能」から %Allを選択
  2. ▶アイコンを利用して%Allを「選択済み」に移動
  3. 付与する」ボタンクリック

これで準備完了です。早速RESTでアクセスしてみます。

ワークフロータスクが0件の場合は、サンプルデータを更新しタスクを作成してください。

手順については「システム連携の自動的な流れの中にユーザからの指示を介入できる「ワークフローコンポーネント」のサンプル」の「5.メモ」をご参照ください。

 

(例では、RESTクライアントにPostmanを使用しています。)

タスク一覧を取得:GET

http://ウェブサーバ/エンドポイント/tasks で取得できます。(ワークフローユーザを利用してBasic認証でアクセスします。パスワードは設定されたパスワードをご利用ください。)

例)http://localhost:52773/wfsample/tasks

タスク一覧のJSONオブジェクトの中に、idプロパティがあります。このidの値を利用して、1件のタスク詳細をGETできます。

 

1件のタスク詳細取得:GET

http://ウェブサーバ/エンドポイント/task/id で取得できます。(ワークフローユーザを利用してBasic認証でアクセスします。パスワードは設定されたパスワードをご利用ください。)

例)http://localhost:52773/wfsample/task/8||ManagerA

 

1件のタスクを処理する:POST

http://ウェブサーバ/エンドポイント/task/id をPOST要求で実行します。(ワークフローユーザを利用してBasic認証でアクセスします。パスワードは設定されたパスワードをご利用ください。)

例)http://localhost:52773/wfsample/task/8||ManagerA

特定した1件のタスクを処理します。今回の例では、承認か却下のボタンを押すことができるので、承認のボタンを押すアクションを実施します。

POST時に送付するJSONは以下の通りです。

{
    "action": "承認",
    "formFields": {
        "RejectedReason": ""
    }
}

action にボタン名を指定します。

formFields.RejectedReasonには「却下理由」を指定します。「承認」の時は空を設定し渡します。
​​​​

この時のトレースは以下の通りです。

承認」の情報が渡されています。

 

では次に、却下を試します。

別のタスクIDを利用して、却下理由(RejectedReason)も含めてPOSTします。

トレースを確認します。


​​​​​「却下」の情報が渡されていることと「却下理由」も渡されていることを確認できます。

 

REST APIでワークフロー用データにアクセスできれば、IRIS付属のユーザポータルではなくお好みのWebアプリケーションをユーザポータルとして利用することもできます。

システム連携の流れの中にユーザからの指示を含めたい処理がある!!という場合には、ぜひこのワークフローコンポーネントをご利用ください😀

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください