ブログ
既存の LotusScript エージェントを Web のワークフローから呼び出す ― 書き直さずに Notes の資産を使い続ける
Notes アプリの Web 化を考えるとき、いちばんの壁になるのが「エージェントに業務ロジックが詰まっている」ことではないでしょうか。採番、マスタの参照、他の DB への書き込み、外部システムとの連携。長年かけて LotusScript や Java で書かれてきた処理を、Web 化のために全部書き直すのは現実的ではありません。
この記事では、consentFlow のワークフローから既存の Notes エージェントをそのまま呼び出す方法を解説します。consentFlow は HCL Domino 上で動く申請・承認アプリの基盤です。Domino 上で動くからこそ、Notes のエージェントを「資産」として使い続けられます。
エージェントに何が入っているか、まず「分類」する
書き直すか残すかを決める前に、エージェントを用途で分けてみると見通しがよくなります。多くの Notes アプリでは、エージェントの用途は次のどれかに収まります。
| 用途 | 例 | Web 化したときの扱い |
|---|---|---|
| 申請番号の採番 | 申請書ごとの番号の払い出し | consentFlow の申請番号の機能(採番ルールの設定)に移す。エージェントで持ち続けない |
| 計算 | 金額の集計、日付や期限の算出 | 残して呼び出す候補 |
| マスタの参照 | 部署・取引先・品目マスタからの値の取得 | 残して呼び出す候補 |
| 他の DB への書き込み | 承認後に台帳 DB へ転記、履歴 DB への記録 | 残して呼び出す候補 |
| 通知 | 関係者へのメール送信 | ワークフロー側の通知機能で置き換えられることが多い |
| 外部システム連携 | 基幹システムへのデータ連携 | 残して呼び出すか、Web 側の連携機能に移すかを個別に判断 |
「残して呼び出す候補」と書いたものは、consentFlow から設定だけで呼び出せます。次の節で仕組みを説明します。
consentFlow はエージェントをどう呼ぶか
consentFlow には、SQL や REST API など外部のシステムとつなぐための「システム連携設定」があります。この連携の種類で 「AGENT」 を選び、呼び出したいエージェントの名前を登録すると、お客様が作った LotusScript / Java のエージェントを、ワークフローや画面から呼び出せるようになります。エージェント本体は、申請アプリの Notes データベース(NSF)側に置いたままです。

ポイントは、コードを consentFlow 側に移さないことです。エージェントは今まで Domino Designer で書いてきたとおりの場所に置き、呼び出す「口」だけを consentFlow 側に設定します。

呼び出せる3つの場面
同じエージェントの登録を、3つの場面から呼び出せます。業務に合わせて使い分けます。
承認の途中で自動実行する(Bot ステップ)
ワークフローの承認ルートの中に、人ではなく自動処理が担当する「Bot ステップ」を置けます。Bot ステップは、ワークフローモデラー(承認ルートを図で設計する機能)の上で、承認者のステップと同じように配置します。

例えば「部門長が承認したら、台帳 DB に転記するエージェントを動かし、その後に経理の承認へ進む」という流れを、人の操作なしでつなげられます。Bot ステップのエージェントは承認した人の画面を待たせず、裏で非同期に実行されます。これまで承認者が「承認したあとに別のボタンを押す」運用をしていたなら、その手間がなくなります。
申請画面のボタンから手で実行する(アクションボタン)
エージェントを、申請画面のボタンとして出すこともできます。ボタンは、どのフォームに出すか、ワークフローのどの段階で出すか、承認者だけが押せるようにするか、を設定で決められます。ボタンは文書を参照しているときに表示され、編集中には表示されません。
例えば「見積の再計算」や「マスタから最新の値を取り直す」のように、人が必要なときに実行したい処理に向いています。
「保存」「下書き保存」と連動させる
申請者が「保存」や「下書き保存」を押した直後に、エージェントを実行する設定もあります。保存と下書き保存のどちらで動かすかを別々に選べます。
例えば「保存のたびに関連する値を補完する」「下書き保存の時点でマスタから最新の値を取り直す」といった使い方です。エージェントが返したメッセージは画面に表示され、エラーのときも文書の保存自体は完了しています。
呼び出し方で変わる動き ― 同期と非同期
同じエージェントの登録でも、どこから呼ぶかで、実行のされ方が変わります。 同期で動く場面と、非同期で動く場面があり、エージェントを設計するときの大事な分かれ目です。
| 呼び出す場面 | 実行のされ方 | 画面の動き | 向いている処理 |
|---|---|---|---|
| 「保存」「下書き保存」との連動 | 同期 | 利用者は、エージェントが終わるまで待つ | 短時間で終わる補完、マスタから最新の値の取り直し |
| アクションボタン | 同期 | 利用者は、エージェントが終わるまで待つ | 見積の再計算など、人が必要なときに実行する処理 |
| Bot ステップ | 非同期 | 承認した人の画面はすぐに戻る | 台帳への転記、他システムへの連携など、時間のかかる処理 |
保存・アクションボタン: 同期で、結果を待ってから次へ進む
「保存」「下書き保存」とアクションボタンから呼ぶときは、エージェントを同期で完了させる必要があります。 画面はエージェントの結果を受け取ってから次に進むため、別のスレッドやスケジュールに処理を逃がすと、結果を受け取れません。
利用者がその間待つので、長時間かかる処理にはこの場面は向きません。短く終わる処理を置き、返したメッセージを画面に出して使います。
Bot ステップ: 非同期で、裏で動いて結果で流れが分かれる
Bot ステップから呼ぶときは、非同期で処理されます。 承認した人の画面はすぐに戻り、エージェントは裏で実行されます。処理の結果に応じて、ワークフローが次へ進むか、差し戻されます。
台帳への転記や他システムへの連携のように時間のかかる処理は、Bot ステップに置くのが向いています。承認者を待たせずに、承認の流れの中へ自動処理を組み込めます。
選ぶときの目安
- 利用者がその場で結果を見たい、短く終わる処理 → 保存との連動かアクションボタン(同期)
- 時間がかかる処理、承認の流れの途中でつなげたい処理 → Bot ステップ(非同期)
既存のエージェントがどちらの場面に向くかは、処理にかかる時間と、結果を画面で返す必要があるかで考えると整理できます。
使うときの前提と注意
- スケジュール起動はできません。 呼び出せるのは、上の3つの場面からです。夜間に動かしているスケジュールエージェントは、これまでどおり Domino のスケジュールで動かします
- エージェント側で、consentFlow から渡される情報を受け取る形に合わせる必要があります。 既存のエージェントをそのまま登録するのではなく、入り口と出口を consentFlow の決まりに合わせる小さな改修が要ります。中の業務ロジックは変えずに済みます
- 画面(UI)を前提にしたスクリプトは、そのままでは動きません。 Notes クライアントのアクションボタンに書いた LotusScript は、
NotesUIWorkspaceやNotesUIDocumentで「いま開いている文書」を操作していることがよくあります。consentFlow から呼ばれるエージェントは画面なしで動くため、NotesUIで始まるクラスは使えません。consentFlow から渡される文書の ID でバックエンドの文書(NotesDocument)を開いて操作する形に書き換えます。書き換えるのは文書の取り方だけで、その先の業務ロジックは同じです - 申請番号の採番は、エージェントではなく consentFlow の申請番号の機能に任せます。 採番ルールはアプリケーション設定で決められ、申請のたびに consentFlow が番号を払い出します。Notes 側で採番していたエージェントは、Web 化のときに役目を終えます
- この機能は consentFlow 4.3.0 で正式リリースされています。アクションボタンと保存との連動は、リリースノートには載せていない細かな使い方です
- Notes のフィールド名や既存のビューを残したまま、同じ文書を Web から読み書きする運用(Notes クライアントと Web の併用)とも組み合わせられます。その話は別の記事で扱います
「全部書き直す」か「全部残す」かの二択ではない
Web 化の相談では、「結局、全部作り直しになるのでは」という不安をよく伺います。エージェントについては、上で分類したように、残して呼び出すもの、Web 側の機能で置き換えるもの、個別に判断するものに分けられます。
残して呼び出すと決めた処理は、業務ロジックに手を入れずに Web のワークフローから使えます。置き換えると決めた処理は、consentFlow の通知や連携の機能で作り直します。この判断を処理ごとに行えるのが、Domino 上で動く consentFlow の利点です。
まとめ
- Notes のエージェントは、consentFlow の「システム連携設定」で AGENT として登録すれば、設定だけで呼び出せる
- 呼び出せる場面は3つ。承認の途中(Bot ステップ)、申請画面のボタン、保存・下書き保存との連動。同期か非同期かは、この場面で決まる
- 呼ぶ場面で動きが変わる。保存・アクションボタンは同期(結果を待って次へ進む)、Bot ステップは非同期(承認者の画面はすぐ戻り、裏で動いて結果で流れが分かれる)。スケジュール起動は不可。入り口と出口を合わせる小さな改修(
NotesUI系のクラスを使っていた部分の書き換えを含む)は要るが、業務ロジックは変えない。申請番号の採番は consentFlow の機能に任せる
御社の Notes アプリで、どのエージェントを残し、どれを置き換えるか。実際の申請書を題材にすると、具体的に見えてきます。
御社専用のデモ画面で、consentFlow の機能や操作性をお試しいただけます。→ デモの使用依頼
実際の申請書 1 本を一緒に形にします。→ 個別 PoC 相談