TransferManager オブジェクト

振替マネージャオブジェクト。

未完了案件の処理待ちノードに対して、指定したユーザの振替処理を行います。

本オブジェクトでは、未完了案件の権限者情報を保存している下記のテーブルのデータとXMLファイルデータを入れ替える処理を行います。
・「imw_t_actv_executable_user」:未処理案件権限者情報。
・「imw_t_actv_user_orgz」:未処理案件権限者組織情報。
※ファイルの格納場所は標準設定の場合です。
※各ファイルは、振替処理を行った時のトランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合に作成されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/executableUser.xml
  → 案件処理権限者情報。 振替処理の履歴は下記のXMLファイルに保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
  → 振替処理権限者変更情報。

振替処理により、権限者情報が削除→再作成(=展開)された時には、権限者情報リスナーが動きます。
下記の拡張ポイントのプラグイン処理を拡張することで、処理を追加することができます。
権限者情報削除リスナーの拡張ポイント:「jp.co.intra_mart.workflow.plugin.event.node.authority.delete.listener」
権限者情報作成リスナーの拡張ポイント:「jp.co.intra_mart.workflow.plugin.event.node.authority.expand.listener」

導入されたバージョン:7.2

コンストラクタの概要
TransferManager (String loginGroupId ,String localeId ,String systemMatterId ,String nodeId)
コンストラクタ
引数で指定したログイングループID、ロケールID、システム案件ID、ノードIDで振替マネージャを
新しく生成します。

メソッドの概要
WorkflowResultInfo transfer (TransferParamInfo transferParam ,Boolean sendMailFlg ,String noticeComment)
振替処理を実行します。

コンストラクタの詳細
TransferManager

TransferManager (String loginGroupId ,String localeId ,String systemMatterId ,String nodeId)
コンストラクタ
引数で指定したログイングループID、ロケールID、システム案件ID、ノードIDで振替マネージャを
新しく生成します。
パラメータ
loginGroupId String ログイングループID
localeId String ロケールID
systemMatterId String システム案件ID
nodeId String ノードID

メソッドの詳細
transfer

WorkflowResultInfo transfer (TransferParamInfo transferParam ,Boolean sendMailFlg ,String noticeComment)

振替処理を実行します。

このメソッドでは内部でトランザクションの制御処理を行なっています。
メソッドの実行前に、ユーザトランザクションを終了状態にして置く必要があります。

指定した「振替用パラメータ情報オブジェクト」で、未完了案件の処理権限者に対して振替処理を行います。
指定したパラメータの「実行者コード」と「振替元権限者コード」が異なる場合は、代理での振替処理を行います。
以外の場合は、「実行者コード」のユーザ本人での振替処理を行います。

振替処理は、本人から他人への処理依頼になります。振替先に本人が含まれる設定を行った場合でも、
振替先の展開情報からは振替元のユーザ情報は削除されます。

コンストラクタに指定したシステム案件IDとノードIDで取得した案件のノード情報が、処理待ちの状態ではない場合は、
権限者情報を変更することはできません。処理に失敗し、エラー情報を格納した結果オブジェクトを返却します。
指定した振替元のユーザが、対象案件のノードの権限者ではない場合にも権限者情報を変更することはできません。
同じく処理に失敗し、エラー情報を格納した結果オブジェクトを返却します。

振替処理を行う際に、そのノードの状態が「保留」の場合は、保留削除処理が自動で行われます。
保留処理によって処理できなくなった人も振替後には処理ができるようになります。

パラメータの「振替通知メール送信フラグ」が「TRUE」の場合は、パラメータで指定した「振替通知コメント」を本文にした振替通知メールを送信します。

振替先ユーザ情報を格納しているパラメータの「振替先処理対象者情報(プラグイン情報)」の展開処理は該当案件の「申請基準日」を基準に行います。

展開された振替先ユーザ情報で、未完了案件の権限者情報のデータベースデータやXMLファイルデータを更新し、
振替ユーザの履歴ファイルを残します。
更新対象のテーブルは未完了案件の権限者情報を保存している「imw_t_actv_executable_user」、「imw_t_actv_user_orgz」です。
振替先処理対象者のプラグイン情報は「flow.xml」の対象ノードに追加されます。
標準設定の場合、取得対象の「flow.xml」は下記に格納されています。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
トランザクションファイルレベルが「[2]:全てのファイル情報を作成」の場合は、権限者情報がXMLファイルで保存されています。そのファイルの更新処理も同じく行います。
ファイルの格納場所は、標準設定の場合には下記になります。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/executableUser.xml
振替処理処理によって権限者情報が変更したことを履歴情報として残す場所は、標準設定の場合に下記になります。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
履歴ファイルも権限者情報と同じく、トランザクションファイルレベルが「[2]:全てのファイル情報を作成」の場合に作成されます。

振替処理により、データベースを更新する処理は、該当ノードの権限者情報を全て削除し、全データを再作成(=展開)する処理になります。
この削除、展開処理時にはリスナーを追加することができます。(※拡張ポイントはクラスの説明を参照してください。)
振替処理内のトランザクション処理では、データベースへのデータ削除、登録や、XMLファイルへの書き込み処理が全て終了した後にコミット処理を行います。
データベースの権限者情報削除→権限者削除リスナー実行→データベースの権限者情報再展開→権限者展開リスナー実行→XMLファイルの入替→メール送信→保留ステータス削除の順で処理を行います。
データベースの処理の途中、もしくはファイルの処理でエラーが発生した場合には、データベースのデータは全てロールバックされますが、
場合によっては、XMLファイルのデータには処理時のデータが残る場合もあります。

権限者情報の変更処理は振替処理以外に、案件操作マネージャの処理対象者変更処理でも行えます
詳細は「ActvMatterHandleManager#createProcessTarget(String, Array)」を参照してください。

パラメータ
transferParam TransferParamInfo 振替用パラメータ情報オブジェクト
sendMailFlg Boolean 振替通知メール送信フラグ
noticeComment String 振替通知コメント
返却値
WorkflowResultInfo 処理結果を返却します。
WorkflowResultInfo のdata属性には、nullが設定されます。