Questetra には、ユーザ自身がスクリプト(ECMAScript)を記述してオリジナルの処理を定義できる自動処理工程[スクリプトタスク]と、インポートして追加可能なアドオン自動工程[サービスタスク(Add-on)]があります(どちらも Professional エディションで利用可能)。
これらの自動工程では、記述されたスクリプト(コード)が JavaScript の実行エンジン(スクリプトエンジン)によって処理されます。この際、スクリプトエンジンの重要な特徴として「Java で実装された機能にアクセスできる」点が挙げられます。これを利用して、Java で実装された Questetra(のワークフローエンジン)に JavaScript による文法を使用してアクセスできる設計となっています。
Java クラス/メソッドの廃止
[スクリプトタスク]などで利用できる Java クラスやメソッドは、リファレンス(R2300)に記載されておりますが、Questetra の開発や改良により、一部のクラス/メソッドが廃止される場合があります。
廃止が予定されているクラスやメソッドは、バージョン情報を通じてアナウンスされ、通常は1年以上の猶予期間を経て実際に廃止されます。猶予期間が設けられているため、廃止予定のアナウンスから実際に廃止されるまでには時間があります。
廃止されたクラスやメソッドがスクリプトに使われていた場合、スクリプト工程が実行されると処理失敗になります。ワークフローアプリを安定的に運用するためには、ワークフロー設計者(アプリ開発者)はクラスやメソッドが廃止される前に、スクリプト(コード)の修正が必要となります。
廃止クラス/メソッドの見つけ方
廃止される予定のメソッドが実行されると[プロセスログ]に「警告ログ(Warn)」が出力されます。この警告ログを用いて、対象のワークフローアプリや自動工程を特定し、スクリプトの修正を行います。
[システム管理権限]を持つユーザは、[システム設定]>[プロセスログ]からプロセスログを検索・一覧できます。フィルタ条件にて「警告を含むログのみ」を有効にして検索すると、「警告ログ(Warn)」のみを一覧することができます。対象アプリや日付の条件も加えることで、さらに絞り込むことも可能です。

一覧にある (i) マークをクリックすると各ログの詳細(ログメッセージ)を確認することができます。廃止が予定されているメソッドが利用されていると、[Warn] ではじまる次のような形式のログメッセージが出力されています。
[Warn] XXX() has been deprecated. Use YYY() instead.
[プロセスログ]には「アプリ名」や「工程名」も記録されるため、修正が必要なワークフローアプリと対象の自動工程を特定できます。

[システム管理権限]を持っていない場合、各ワークフローアプリの[アプリ管理権限]ユーザは、「警告ログ(Warn)」の確認を[システム管理権限]を持つユーザに依頼してください。
もしくは、プロセス詳細画面の「管理者モード」にて自動工程の処理記録から自動処理ログをご確認ください(要[コントロール権限])。
廃止が予定されているクラス/メソッドだけでなく、廃止されるスクリプトエンジンが実行された際などにも「警告ログ(Warn)」が表示されます。また、[スクリプトタスク][サービスタスク (Add-on)]以外の自動工程にて、「警告ログ」が出力される場合もあります。
スクリプトエンジン「GraalJS (Nashorn Compatible Mode)」の廃止に関しては、次の記事を参照してください。
廃止クラス/メソッドへの対処方法
修正が必要なワークフローアプリと対象の自動工程を特定できたら、該当の自動工程のスクリプトを改修します。「警告ログ(Warn)」には、廃止されるメソッドと(通常は)後継のメソッドが示されているので、これらの情報を参考にコードを書き換えてください。
各メソッドの情報は、リファレンス(R2300)で確認できます。
クラス/メソッドが完全に廃止された後、修正されていないスクリプトが実行された場合、対象の自動工程は実行時エラーになります。定期的に「警告ログ(Warn)」が出ないかを確認し、廃止される前に適切に対応してください。
コードの変更例
例えば、空のテーブルを生成する処理において以下のような警告ログが出力されている場合、ListArray() が利用されている処理を createListArray() を利用するコードに置き換えます。
[Warn] new com.questetra.bpms.core.model.formdata.ListArray() has been deprecated. Use createListArray() instead.
- 廃止されるメソッド(クラス)
com.questetra.bpms.core.model.formdata.ListArray- ListArray() は廃止される ListArray クラスのコンストラクタ
- 後継のメソッド(クラス)
ScriptListArray ProcessDataDefinitionView.createListArray()- テーブル型の場合に、空のテーブル(空の ScriptListArray オブジェクト)を生成する
//コード変更前
let newTable = new com.questetra.bpms.core.model.formdata.ListArray();
↓
//コード変更後
const tableDataDefinition = engine.findDataDefinitionByVarName(“q_table”);
let newTable = tableDataDefinition.createListArray();この例では、ListArray クラスのコンストラクタを呼び出してオブジェクトを生成していた処理を ProcessDataDefinitionView.createListArray() を利用して空の ScriptListArray オブジェクトを生成する処理に置き換えています。対応方法は廃止されるメソッドによって異なりますので、ドキュメントを確認し適切にコードを変更してください。
スクリプトの変更後は、[デバッグ実行]や[この工程のみデバッグ]を利用して、期待通りの動作をしているか動作確認を行ってください。
アドオン自動工程での対応
対象の自動工程が「アドオン自動工程」である場合、登録されているサービスタスク定義ファイル(Addon-XML)の更新が必要となります。Addon-XML ファイルを修正するか、新バージョンの定義ファイルを入手して、登録されている定義ファイルを更新してください。定義ファイルは以下のいずれかに登録されています。
- アプリ固有のサービスタスク定義
- (アプリ詳細画面) > ▼アプリ > アドオンの管理 > サービスタスク定義ファイル
- 対象アプリの「アプリ管理権限」が必要
- アプリ共有のサービスタスク定義
- システム設定 > アプリ共有アドオン > サービスタスク定義ファイル
- 「システム管理権限」が必要
手間をおかけいたしますが、「警告ログ(Warn)」が出力されている廃止予定のクラス/メソッドが利用されている自動工程については、スクリプト(コード)を更新していただくようお願いします。
