■原因
バージョン 2.2 以前の場合、製品の仕様となります。
サービス停止時に「メッセージ送信中間イベント(DataSpider Servista)」を実行していて、結果が取得できなかった場合、サービスが起動した時点で、そのタスクをもう一度実行します。このため、スクリプトが再度実行されます。
■対処方法
バージョン 2.3 にアップグレードすることで、対象のタスクが「処理失敗」として終了し、サービスを起動した際には、次のタスクが実行されます。このため、サービス起動時にスクリプトは再度実行されません。
アップグレードが難しい場合には、以下の回避策をご検討ください。
「メッセージ送信中間イベント(DataSpider Servista)」のプロセスIDは、プロセスモデルが開始した際に発番されるため、同一プロセスで、同一のタスクを複数回実行した場合でも、同一の値となります。
このため、DataSpider BPM と、DataSpider Servista の連携について以下のように修正することで、重複した実行を避けることができます。
「メッセージ送信中間イベント(DataSpider Servista)」で、実行するスクリプトに「プロセスID」を渡すように設定してください。
- 「メッセージ送信中間イベント(DataSpider Servista)」から送信されてきた「プロセスID」を登録するファイルかデータベースを用意します。
- スクリプトの最初に、送信されてきた「プロセスID」でファイルかデータベースを検索し、既に存在している場合には、スクリプトを終了する処理を追加します。
■補足
「メッセージ送信中間イベント(DataSpider Servista)」の使用頻度が低い場合にはDataSpider BPM のサービスを停止する前に、スクリプトが稼働中でないか確認してから停止することで、事象を回避することもできます。
DataSpider Servista で実行しているスクリプトを確認するためには、DataSpider Studio のタスクマネージャから「スクリプトプロセス」を確認するか、CLI Consoleから、psコマンドを実行してください。
参考情報
・タスクマネージャ
・CLI Console