IBM TechXchange Japan Business Automation User Group

 View Only

BAW Tips #11 プロセス・インスタンスの修正について

By SHINTARO HASE posted Wed October 30, 2024 01:20 AM

  

プロセス・インスタンスの修正

プロセス・インスタンスが失敗した状態になってしまう理由は様々ですが、BAWを運用するにあたって、失敗状態になったプロセス・インスタンスを修正する機会があります。この記事では代表的なプロセス・インスタンスの修正方法について説明します。

プロセス・インスタンスが失敗状態になる理由

プロセス・インスタンスが失敗(Failed)状態になる理由としては以下のようなものが考えられます。

・クライアント・サイド・ヒューマン・サービスの処理中に利用者がブラウザを閉じたり、PCが落ちて処理が途中終了した場合

・システムの過剰な負荷などで、接続先のシステムの呼び出し中にタイムアウトが発生した場合

・接続先のシステムのトラブルで処理が正常に完了しなかった場合

・正しい値が入力されておらず、システム上で処理できずにエラーになった場合

・JavaScriptのロジックなどにエラーがあった場合

上記状況に、具体的にどのようなエラーが発生するかは、アプリケーションの実装により様々なパターンがありますので、事前にエラーケースを十分にテストし、それぞれの対応策を決めておくことが重要です。

失敗したインスタンスの確認方法、リカバリー方法

失敗したインスタンスを確認、処理する方法として代表的なものはProcessInspectorの利用です。ProcessAdminConsoleからProcessInspectorにアクセスし、左側のフィルターより、失敗状態のインスタンスのみフィルタリングして表示することが可能です。特定の業務に対する処理を特定の権限を持つユーザーに実行させたい場合には、専用の運用ツールなどを実装することを検討しても良いでしょう。

では、いくつかのパターンに分けてリカバリーの方法を紹介していきます。

パターン1:失敗したステップの再実行

接続先のアプリケーションがダウンしていたなどの理由で失敗状態になっているようなケースでは、単純にそのステップを再実行することによってリカバリー可能です。ただし、タイミングなどによって、接続先のアプリケーションでインサート系の処理などを行っている場合には、重複して処理が実行される可能性も考慮する必要があります。重複して処理が実行されないような仕組みをあらかじめアプリケーションに組み込んでおくことで運用を簡易化できることもあります。

失敗したステップを再実行するには、「失敗ステップの再試行」をクリックするだけでOKです。

パターン2:インスタンス・データの修正

プロセスが失敗状態になっている原因として、インスタンス・データに問題があるケースがあります。その裏には、本来、問題があるようなデータを入力、取得できないようデータを検証するロジックが足りていない、あるいは、スクリプトがハンドリングできない想定外の値が入力されているなどの、アプリケーションの実装の問題が潜んでいる可能性が高いのですが、応急処置的にはインスタンスのデータを修正してしまい対応することも可能です。

修正方法としては、パターン1と同様にProcessInspectorから失敗したインスタンスを表示し、「データの編集」をクリックすると、データを編集、保存することが可能ですので、正しい値に変更後、失敗したステップを再実行することになります。

パターン3:ステップの戻し/ジャンプ(トークンの移動)

アプリケーションによっては、該当ステップを正常に動作させることは困難で、手前のステップに戻したい、あるいは、後続のステップにジャンプさせて全体として処理を完了させたいケースもあるでしょう。その場合には、トークンの移動という手段が利用可能です。

トークンの移動は以下のAPIを用いて実行可能です。

https://www.ibm.com/docs/ja/baw/24.x?topic=instance-post-move-token

このAPIを実行するにあたって必要なパラメータは以下の通りです。

instanceID:トークンを移動したいプロセスのインスタンスID

action:moveToken  (Stringの固定値)

tokenId:移動させたいトークンのID

target:移動先のステップのID

トークンのIDはRESTAPIで取得することが可能です。1プロセス上で複数のトークンが存在することもありますので、適切なトークンを選択するようにする必要があります。例えば以下のRESTAPIでは、プロセス・インスタンスIDが1106のプロセスの詳細を取得します。

rest/bpm/wle/v1/process/1106?parts=all

このAPIの戻りとして以下の様に、トークンのID=4が含まれます。

targetとなるステップも先ほどのAPIの戻りで同様に確認することが可能です。stepとして、各ステップの名前やIDが含まれるので、移動先となるステップのIDを指定します。

実際の実行結果が以下の通りです、再開(restart)フラグをtrueにすると、トークン移動後に処理が再開されます。

パターン4:プロセスの再実行

4つ目のパターンはプロセスの再実行です。状況によっては、細かくトークンの調整を行ったりするよりも、現行のインスタンスを削除して再申請を担当者の方に依頼したほうが早いケースがあります。

まとめ

いかがでしたでしょうか?BAWでは、専用の運用画面などを作成しなくても、ProcessInscpectorやRESTAPI(bpmrest-ui)を使用することでエラーの修正を行うことが可能です。この記事では4つのパターンに分けてBAWのプロセス・インスタンスのリカバリー方法について説明しました。これが全てのパターンではないですし、単純に再実行を行って業務上不整合が無いか、データ上問題が無いか、あるいはどうハンドリングすべきかはシステム面からだけは判断できず、業務担当者と会話したうえで対応することが必要なケースもあります。

アプリケーションの設計、開発の段階から、エラー時の対応、運用を含めて検討してくことで、本番運用開始後に発生する課題を少なくすることが可能ですので、これらの対応方法を含めアプリケーションの実装を検討することが重要です。


#BusinessAutomationWorkflow(BAW)
0 comments
9 views

Permalink