ブログ

ブログ一覧に戻る

     

既存の 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 のワークフローや画面から既存の Notes エージェントが呼び出される流れ

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

システム連携設定で連携の種類に「エージェント」を選んだ画面。エージェント名と、保存時・下書き保存時・アクションボタンの切り替えが並ぶ(デモ環境)

呼び出せる3つの場面

同じエージェントの登録を、3つの場面から呼び出せます。業務に合わせて使い分けます。

承認の途中で自動実行する(Bot ステップ)

ワークフローの承認ルートの中に、人ではなく自動処理が担当する「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 相談

カテゴリ

タグ