jp.co.intra_mart.foundation.workflow.application.process
クラス ActvMatterHandleManager
java.lang.Object
jp.co.intra_mart.foundation.workflow.application.process.ActvMatterHandleManager
public class ActvMatterHandleManager
- extends Object
案件操作マネージャ。
未完了案件に対して、管理者権限で設定情報や処理情報の変更操作を行います。
ノードのコピーや削除によるフロー情報変更処理、横・縦配置ノードの初期化や再展開、処理待ちノードの変更、
案件参照者、処理権限者、確認処理権限者の情報変更、管理者権限での強制保留削除等の処理を行うことができます。
本クラスでは、未完了案件対して処理を行います。
各メソッドによる変更対象のデータベーステーブルは「imw_t_actv」で始まるトランザクション系の未完了案件関連テーブルになります。
他に、トランザクションファイルの設定レベルによっては、XMLファイルの変更処理も行います。
標準設定の場合は、変更対象のXMLファイルは下記に格納されています。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}
完了案件に対して、案件操作を行う場合には「CplMatterHandleManager
」を利用してください。
- 導入されたバージョン:
- 7.2
- 関連項目:
CplMatterHandleManager
ActvMatterHandleManager
public ActvMatterHandleManager(String loginGroupId,
String localeId,
String systemMatterId,
String operateUserCode)
- コンストラクタ
引数で指定したログイングループID、ロケールID、システム案件ID、操作者ユーザコードで
案件操作マネージャを新しく生成します。
- パラメータ:
loginGroupId
- ログイングループIDlocaleId
- ロケールIDsystemMatterId
- システム案件IDoperateUserCode
- 操作者ユーザコード
copyNodeFromMasterFlow
public void copyNodeFromMasterFlow(String masterNodeId,
String backwardNodeId,
String forwardNodeId,
String copyNodeId)
throws WorkflowException
- マスタフローから実行中フローにノードをコピー(追加)します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、申請・起票時の情報を保存しているマスタフロー情報「masterflow.xml」から
最新の処理中のフローへ指定したノード情報をコピーします。
確認ノード以外の削除した処理ノードをマスタフローからコピーし復活させることができます。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する全てのノードIDは必須になります。
特に、コピーする対象になる「masterNodeId マスタノードID」が存在しない場合は「WorkflowException
」が発生します。
コピーするノードの追加場所は「backwardNodeId 挿入する逆方向ノードID」と「forwardNodeId 挿入する順方向ノードID」で指定します。
指定したノードの間に、「マスタノードID」で取得したノードが追加されます。追加する際に追加ノードのIDは「copyNodeId コピー(追加)ノードID」で指定できます。
ただし、追加する前後ノードのIDを指定して、ルートの設定上、その間に配置されることになっても、条件によっては画面表示上にはその間に表示されません。
追加されたノードの実際の表示位置(デザイナー等で表示されるノードの位置)はマスタフローからコピーしたノードの座標をそのまま継承します。
それで、同じマスタノードを削除処理なしで、2回以上コピーした場合は、画面表示上では、重なって表示されることになりますので、ご注意ください。
コピーしたノードを追加する場所が、分岐開始ノードの直後の場合は、分岐開始ノードに設定されている条件の変更処理を行います。
追加処理前の分岐開始ノードの直後に存在したノードIDの条件を追加するコピーノードIDへ変換します。
コピー対象のマスタフロー情報は標準設定の場合は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/masterflow.xml
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」と進捗情報XML「progress.xml」になります。
最新の「flow.xml」と「progress.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象のファイルは下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/progress.xml
上記のファイルに対して、コピーノードの情報を追加する処理を行います。
フローXMLに存在する動的承認ノードを削除する処理等を行うには、「deleteNode(String)
」を利用してください。
- パラメータ:
masterNodeId
- マスタノードIDbackwardNodeId
- 挿入する逆方向ノードIDforwardNodeId
- 挿入する順方向ノードIDcopyNodeId
- コピー(追加)ノードID
- 例外:
WorkflowException
- ワークフロー例外
deleteNode
public void deleteNode(String nodeId)
throws WorkflowException
- 指定されたノードを処理中のフローから削除します。
コンストラクタに指定された案件に対して、最新の処理中フローからノード情報を削除します。
指定するシステム案件IDは必ず未完了状態のシステム案件IDを指定する必要があります。未完了案件ではない場合は、 WorkflowException
がスローされます。
指定されたノードが以下の場合は削除することはできません。
- ノード状態が処理中又は処理済の場合
- ノード種別が確認ノードの場合
上記に該当するノードが指定された場合は、WorkflowException
がスローされます。
ノード削除の内部処理として、以下の処理が行われます。
- 削除ノードの前後に配置されているノードに対して、前後ノードを接続する補正処理を行います。
- 削除ノードが確認ノードに接続している場合、確認ノードは削除ノードの直前ノードに接続されます。
ただし、削除ノードの直前ノードの種別によって確認できない場合があります。
※ 確認できる状態になるのは、接続されているノードが「申請」、「再申請」、「承認」で処理された場合のみです。
- 削除ノードの直前が分岐ノードの場合、分岐ノードに設定されている条件の変更を行います。(削除ノードIDの条件を削除ノード直後のノードIDに置換します。)
本メソッドによって実際に更新されるXMLファイルは、処理中のフローXML「flow.xml」と進捗情報XML「progress.xml」になります。
トランザクションファイルレベル設定が標準の場合は、下記に格納されます。
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/progress.xml
最新の「flow.xml」と「progress.xml」は、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」を利用して、トランザクションファイルディレクトリから取得されます。
フローXMLに存在する動的承認ノードを追加する処理等を行うには、 copyNodeFromMasterFlow(String, String, String, String)
を利用してください。
- パラメータ:
nodeId
- ノードID
- 例外:
WorkflowException
- ワークフロー例外
expandHorizontalVerticalNode
public void expandHorizontalVerticalNode(String horizontalVerticalNodeId,
MatterNodeExpansionModel[] nodes)
throws WorkflowException
- 指定された案件ノード展開情報を横配置・縦配置ノード内に展開、再展開します。
コンストラクタに指定された案件に対して、案件ノード展開情報を横配置・縦配置ノード内に展開します。
指定するシステム案件IDは必ず未完了状態のシステム案件IDを指定する必要があります。未完了案件ではない場合は、 WorkflowException
がスローされます。
再展開は、すでに展開されている横配置・縦配置ノードに対して、展開したい案件ノード展開情報の配列を再設定し、本メソッドを実行すると再展開されます。
※展開(再展開)されるノードのIDは自動採番されるため、外部から指定することはできません。
再展開される手順は以下の通りです。
- 最新のフロー情報から展開されているノード情報を取得し、すべて削除します。(横配置・縦配置ノード含まれます。)
- 指定された横配置・縦配置ノード情報をマスタフロー情報から取得して横配置・縦配置ノード復元します。
- 指定された案件ノード展開情報を横配置・縦配置ノード内に再展開します。
展開されているノードを削除した場合は、空の案件ノード展開情報の配列を指定し、本メソッドを実行することで削除できます。
※案件ノード展開情報の配列が指定されていない場合も削除されます。
ただし、本メソッドでは、展開されているすべてのノードと横配置・縦配置ノードが削除されます。
展開されているノードのみを削除したい場合は、横配置・縦配置ノード初期化 initializeHorizontalVerticalNode(String)
を利用してください。
指定された横配置・縦配置ノードが以下の場合は再展開、展開ノード削除はできません。
- 横配置・縦配置ノード内のノードが展開されていて、展開ノードに処理中ノードが存在する場合
-
横配置・縦配置ノード内のノードが展開されていて、展開ノードに処理済ノードが存在する場合
ただし、案件操作で処理済になった場合は、未処理と判断します。
上記の状態で再展開、展開ノードの削除を行った場合は、 WorkflowException
がスローされます。
横配置・縦配置ノードの直前のノードが分岐開始ノードの場合、展開(再展開)時に分岐開始ノードの分岐条件変更が行われます。
- 分岐条件に横配置・縦配置ノードに関連する条件が設定されている場合、横配置・縦配置ノード内に展開されたノード(分岐開始ノードに接続されたノード)に変更されます。
横配置・縦配置ノード内に展開されたノードには親ノード情報を含むノード情報が保存されています。
展開されたノードのノード情報を取得するには ActvMatterNode.getMatterNode(String)
を利用してください。
展開されたノードに設定されているノード設定情報を取得には ActvMatterNode.getExecNodeConfig(String)
を利用してください。
本メソッドによって実際に更新されるXMLファイルは、処理中のフローXML「flow.xml」と進捗情報XML「progress.xml」になります。
トランザクションファイルレベル設定が標準の場合は、下記に格納されます。
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/progress.xml
最新の「flow.xml」と「progress.xml」は、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」を利用して、トランザクションファイルディレクトリから取得されます。
- パラメータ:
horizontalVerticalNodeId
- 横・縦配置ノードIDnodes
- 案件ノード展開情報の配列
- 例外:
WorkflowException
- ワークフロー例外
initializeHorizontalVerticalNode
public void initializeHorizontalVerticalNode(String horizontalVerticalNodeId)
throws WorkflowException
- 指定された横配置・縦配置ノードを初期化します。
コンストラクタに指定された案件に対して、横配置・縦配置ノードを初期化します。
指定するシステム案件IDは必ず未完了状態のシステム案件IDを指定する必要があります。未完了案件ではない場合は、 WorkflowException
がスローされます。
復元する横配置・縦配置ノードIDには、復元元となるマスタフローに存在する横配置・縦配置ノードIDを指定する必要があります。
復元する横配置・縦配置ノードIDは、横配置・縦配置ノード内に展開されているノード情報の親ノードから取得できます。
ノード情報を取得するには ActvMatterNode.getMatterNode(String)
を利用してください。
横配置・縦配置ノードではない場合は、 WorkflowException
がスローされます。
指定された横配置・縦配置ノードが以下の場合は初期化できません。
- 横配置・縦配置ノード内のノードが展開されていて、展開ノードに処理中ノードが存在する場合
-
横配置・縦配置ノード内のノードが展開されていて、展開ノードに処理済ノードが存在する場合
ただし、案件操作で処理済になった場合は、未処理と判断します。
上記の状態で初期化を行った場合は、 WorkflowException
がスローされます。
横配置・縦配置ノードの直前のノードが分岐開始ノードの場合、初期化時に分岐開始ノードの分岐条件変更が行われます。
- 分岐条件に展開ノードに関連する条件が設定されている場合、横配置・縦配置ノードに変更されます。
本メソッドによって実際に更新されるXMLファイルは、処理中のフローXML「flow.xml」と進捗情報XML「progress.xml」になります。
トランザクションファイルレベル設定が標準の場合は、下記に格納されます。
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
- {%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/progress.xml
最新の「flow.xml」と「progress.xml」は、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」を利用して、トランザクションファイルディレクトリから取得されます。
- パラメータ:
horizontalVerticalNodeId
- 横・縦配置ノードID
- 例外:
WorkflowException
- ワークフロー例外
createProcessTarget
public void createProcessTarget(String nodeId,
PluginModel[] plugins)
throws WorkflowException
- ノードに処理対象者情報を追加します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定したノードIDに該当するノードへ処理対象者を追加します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する「nodeId ノードID」は該当案件に必ず存在するIDを指定する必要があります。
存在しないノードIDを指定した場合には、「WorkflowException
」が発生します。
ノードの種別は関係ありません。処理ノード、動的承認ノード、確認ノードのどちらでもこのメソッドで処理対象者を追加することができます。
ノードの処理ステータスも関係なく、処理対象者を追加することができますが、このメソッドでは設定ファイルへの追加処理のみを行います。
そのため、追加対象のノードが処理待ち状態で、追加した処理対象者情報を未完了案件の処理中ノードに反映したい場合には、
「expandProcessTarget(String)
」や「expandConfirmTarget(String)
」で処理者の再展開処理を行う必要があります。
追加する処理権限者情報であるパラメータ「処理対象者情報の配列」には処理権限者のプラグイン情報が格納されます。
追加するプラグイン情報と同じ設定が、追加対象ノードに既に存在する場合は、重複データとして追加処理を行いません。
重複しないデータを抽出し、追加処理を行います。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、該当ノードの処理権限者情報を追加する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、処理権限者の変更履歴を保存しています。
標準の設定の場合は、処理対象者の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
処理対象者を削除するには「deleteProcessTarget(String, PluginModel[])
」や「deleteProcessTargetAll(String)
」を利用してください。
完了案件に対しては、処理対象者を追加できるノードは確認ノードのみです。
完了案件の確認ノードの処理権限者を追加するには、「CplMatterHandleManager.createConfirmTarget(String, PluginModel[])
」を利用してください。
- パラメータ:
nodeId
- ノードIDplugins
- 処理対象者情報の配列
- 例外:
WorkflowException
- ワークフロー例外
deleteProcessTarget
public void deleteProcessTarget(String nodeId,
PluginModel[] plugins)
throws WorkflowException
- ノードの処理対象者情報を削除します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定したノードIDに該当するノードの処理対象者を削除します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する「nodeId ノードID」は該当案件に必ず存在するIDを指定する必要があります。
存在しないノードIDを指定した場合には、「WorkflowException
」が発生します。
ノードの種別は関係ありません。処理ノード、動的承認ノード、確認ノードのどちらでもこのメソッドで処理対象者を削除することができます。
ノードの処理ステータスも関係なく、処理対象者を削除することができますが、このメソッドでは設定ファイルへの削除処理のみを行います。
そのため、削除対象のノードが処理待ち状態で、削除した処理対象者情報を未完了案件の処理中ノードに反映したい場合には、
「expandProcessTarget(String)
」や「expandConfirmTarget(String)
」で処理者の再展開処理を行う必要があります。
削除する処理権限者情報であるパラメータ「処理対象者情報の配列」には処理権限者のプラグイン情報が格納されます。
同じ設定が削除対象ノードに既に存在する場合に、削除処理を行います。削除するデータが存在しない場合でも、例外は発生せずに処理が終了します。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、該当ノードの処理権限者情報を削除する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、処理権限者の変更履歴を保存しています。
標準の設定の場合は、処理対象者の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
処理対象者を全部削除するには「deleteProcessTargetAll(String)
」を利用してください。
処理対象者を追加するには「createProcessTarget(String, PluginModel[])
」を利用してください。
完了案件に対しては、処理対象者を削除できるノードは確認ノードのみです。
完了案件の確認ノードの処理権限者を削除するには、「CplMatterHandleManager.deleteConfirmTarget(String, PluginModel[])
」を利用してください。
- パラメータ:
nodeId
- ノードIDplugins
- 処理対象者情報の配列
- 例外:
WorkflowException
- ワークフロー例外
deleteProcessTargetAll
public void deleteProcessTargetAll(String nodeId)
throws WorkflowException
- ノードの処理対象者情報をすべて削除します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定したノードIDに該当するノードの処理対象者を全て削除します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する「nodeId ノードID」は該当案件に必ず存在するIDを指定する必要があります。
存在しないノードIDを指定した場合には、「WorkflowException
」が発生します。
ノードの種別は関係ありません。処理ノード、動的承認ノード、確認ノードのどちらでもこのメソッドで処理対象者を削除することができます。
ノードの処理ステータスも関係なく、処理対象者を削除することができますが、このメソッドでは設定ファイルへの全削除処理のみを行います。
そのため、削除対象のノードが処理待ち状態で、削除した処理対象者情報を未完了案件の処理中ノードに反映したい場合には、
「expandProcessTarget(String)
」や「expandConfirmTarget(String)
」で処理者の再展開処理を行う必要があります。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、該当ノードの処理権限者情報を全て削除する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、処理権限者の変更履歴を保存しています。
標準の設定の場合は、処理対象者の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
処理対象者を一部削除するには「deleteProcessTarget(String, PluginModel[])
」を利用してください。
処理対象者を追加するには「createProcessTarget(String, PluginModel[])
」を利用してください。
完了案件に対しては、処理対象者を削除できるノードは確認ノードのみです。
完了案件の確認ノードの処理対象者を全部削除するには、「CplMatterHandleManager.deleteConfirmTargetAll(String)
」を利用してください。
- パラメータ:
nodeId
- ノードID
- 例外:
WorkflowException
- ワークフロー例外
expandProcessTarget
public void expandProcessTarget(String nodeId)
throws WorkflowException
- 未完了案件の処理ノードに対して、処理対象者情報を再展開します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定したノードIDに該当するノードの処理対象者を再展開します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する「nodeId ノードID」で取得した案件のノード情報が、処理待ちの状態ではない場合は、
権限者情報を再展開することはできません。「WorkflowException
」が発生します。
同じく、存在しないノードIDを指定した場合にも、「WorkflowException
」が発生します。
本メソッドで展開処理を行う為に、ノードの処理権限者情報を取得する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、該当ノードの処理権限者情報を取得し、再展開処理を行います。
再展開処理は該当案件の「申請基準日」を基準に行います。
再展開処理は、未完了案件の権限者情報のデータベースデータやXMLファイルデータを更新します。
更新対象のテーブルは未完了案件の権限者情報を保存している「imw_t_actv_executable_user」、「imw_t_actv_user_orgz」です。
トランザクションファイルレベルが「[2]:全てのファイル情報を作成」の場合は、同じ権限者情報がXMLファイルで保存されています。
そのファイルの更新処理も同じく行います。
ファイルの格納場所は、標準設定の場合には下記になります。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/executableUser.xml
再展開処理により、権限者データベースを更新する処理は、該当の権限者情報を全て削除し、全データを再作成(=展開)する処理になります。
この削除、展開処理時にはリスナーを追加することができます。
再展開処理により、権限者情報が削除→再作成(=展開)された時には、権限者情報リスナーが動きます。
下記の拡張ポイントにプラグイン処理を拡張することで、処理を追加することができます。
権限者情報削除リスナーの拡張ポイント:「jp.co.intra_mart.workflow.plugin.event.node.authority.delete.listener」
権限者情報作成リスナーの拡張ポイント:「jp.co.intra_mart.workflow.plugin.event.node.authority.expand.listener」
再展開の処理順は、
「データベースの権限者情報削除」→「権限者削除リスナー実行」→「データベースの権限者情報再展開」→「権限者展開リスナー実行」→「XMLファイルの入替」の順で行います。
データベースの処理の途中、もしくはファイルの処理でエラーが発生した場合には、処理が中断され「WorkflowException
」が発生します。
このメソッドでは内部でトランザクション制御を行なっていません。外部で制御を行う必要があります。
正常終了処理後に、トランザクションをロールバックした場合はデータベースの更新データのみロールバックされます。
更新した履歴ファイルやトランザクションファイルデータは元に戻らないので、ご注意下さい。
展開処理を行う前に、フローXML「flow.xml」の処理対象者設定を変更するには、
「createProcessTarget(String, PluginModel[])
」や「deleteProcessTarget(String, PluginModel[])
」等を利用してください。
完了案件に対して処理対象者の再展開処理を行うのはできません。
- パラメータ:
nodeId
- ノードID
- 例外:
WorkflowException
- ワークフロー例外
expandConfirmTarget
public void expandConfirmTarget(String nodeId)
throws WorkflowException
- 未完了案件の確認ノードに対して、確認処理権限者を再展開します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定した確認ノードIDに該当するノードの処理権限者を再展開します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
パラメータで指定する「nodeId ノードID」は確認ノードIDを指定する必要がありますが、
確認ノードを指定していない場合は特に例外は発生せず、処理が中断されます。
尚、確認ノードIDを指定した場合でも、その確認ノードが未到達の場合でも、同じく処理が中断されます。
確認ノードに到達しているかの判定は、確認ノードの前につながっている処理ノードが、「申請」、「再申請」、「承認」の処理で終了されたかで
判定します。前のノードが未処理か、3つのステータス以外で終了した場合は、確認ノードは未到達の判定になります。
確認ノードのユーザ再展開時に、既存ユーザは全て削除されますが、再展開される情報に既存のユーザが存在する場合は、
その既存ユーザの「確認済みフラグ」と「到達日付」の情報は引き継いで再展開処理を行います。
他のユーザは新しい確認処理権限者として、新規追加になります。
ユーザが削除されても、削除された既存ユーザの確認履歴は削除されずに、そのまま残ります。
本メソッドで展開処理を行う為に、ノードの処理権限者情報を取得する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、該当確認ノードの確認処理権限者情報を取得し、再展開処理を行います。
再展開処理は該当案件の「申請基準日」を基準に行います。
再展開処理は、未完了案件の確認処理権限者情報のデータベースデータやXMLファイルデータを更新します。
更新対象のテーブルは未完了案件の確認処理権限者情報を保存している「imw_t_confirm_user」、「imw_t_confirm_orgz」です。
トランザクションファイルレベルが「[2]:全てのファイル情報を作成」の場合は、同じ権限者情報がXMLファイルで保存されています。
そのファイルの更新処理も同じく行います。
ファイルの格納場所は、標準設定の場合には下記になります。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/confirmEnableUser.xml
再展開の処理順は、
「データベースの権限者情報削除」→「データベースの権限者情報再展開」→「XMLファイルの入替」の順で行います。
データベースの処理の途中、もしくはファイルの処理でエラーが発生した場合には、処理が中断され「WorkflowException
」が発生します。
このメソッドでは内部でトランザクション制御を行なっていません。外部で制御を行う必要があります。
正常終了処理後に、トランザクションをロールバックした場合はデータベースの更新データのみロールバックされます。
更新した履歴ファイルやトランザクションファイルデータは元に戻らないので、ご注意下さい。
展開処理を行う前に、フローXML「flow.xml」の確認処理権限者設定を変更するには、
「createProcessTarget(String, PluginModel[])
」や「deleteProcessTarget(String, PluginModel[])
」等を利用してください。
完了案件に対して確認処理権限者の再展開処理を行う場合は、「CplMatterHandleManager.expandConfirmTarget(String)
」を利用してください。
- パラメータ:
nodeId
- ノードID
- 例外:
WorkflowException
- ワークフロー例外
getNodesToMove
public MatterNodeModel[] getNodesToMove(String originalNodeId)
throws WorkflowException
- 特定の処理中のノードから案件操作で移動できるノートとして指定可能な移動先ノード情報を取得します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
パラメータで指定した「originalNodeId 移動元ノードID」から移動できるノードの一覧を取得します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
「originalNodeId 移動元ノードID」には処理中のノードを指定する必要があります。
処理中ではない場合には、「WorkflowException
」が発生します。
処理中のあるノードから移動できるノードは、指定したノードの前方、後方のルート上に存在するノードの中で、
開始ノードを除外した全てノードになります。
ただし、移動元ノードが分岐終了ノードの場合は、前方(ルート移動方向の逆方向)に処理中のノードが存在する場合があります。
この場合、処理中のノードも除外対象になります。
該当するノードが存在しない場合は、サイズ0の空オブジェクトを返却します。
返却モデルに複数のノードが存在する場合でも、特にソート処理は行なっていません。
ルート関連情報は、最新のフローXML情報から取得します。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象のファイルは下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルから、ノードの前方、後方のルート情報を取得します。XMLファイルの取得に失敗した場合は、「WorkflowException
」が発生します。
- パラメータ:
originalNodeId
- 移動元ノードID
- 戻り値:
- MatterNodeModel[] 案件ノード情報の配列
- 例外:
WorkflowException
- ワークフロー例外
moveActvNode
public void moveActvNode(String originalNodeId,
String[] targetNodeId)
throws WorkflowException
- 未完了案件の処理中のノードの移動処理を行います。
管理者権限で、コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
処理中のノード「originalNodeId 移動元ノードID」から
処理中ではない他のノード「targetNodeId 移動先ノードIDの配列」への移動処理を行います。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
このメソッドでは内部でトランザクションの制御処理を行なっています。
メソッドの実行前に、ユーザトランザクションを終了状態にして置く必要があります。
「移動先ノード」として指定可能なノードは、「getNodesToMove(String)
」で取得できますが、本メソッドでは特にチェック処理を行なっていません。
「移動元ノードID」が処理中のノードで、「移動先ノードID」が処理中ではないノードであれば、制限なく、移動することができます。
「移動先ノードID」が「移動元ノードID」より、後方(ルート移動方向の順方向)に存在すれば、
単に「移動先ノードID」が終了され、「移動元ノードID」が処理待ちの状態になりますが、
その逆のパターンで、「移動先ノードID」が「移動元ノードID」より、前方(ルート移動方向の逆方向)に存在すれば、差戻しと同じ動きになります。
詳細動作は「ProcessManager.sendBack(jp.co.intra_mart.foundation.workflow.application.model.param.SendBackParam, Map)
」を参照してください。
「移動先ノードID」が「終了ノード」の場合は、案件は終了する動きになります。
案件の移動処理では、ユーザのアクション処理と到達処理が実行されます。「移動先ノードID」が終了ノードの場合は案件終了時処理も実行されます。
下記の拡張ポイントのプラグイン処理を拡張することで、処理を追加することができます。
アクション処理:「jp.co.intra_mart.workflow.plugin.event.node.action.process」
到達処理:「jp.co.intra_mart.workflow.plugin.event.node.arrive.process」
案件終了時処理:「jp.co.intra_mart.workflow.plugin.event.matter.end.process」
アクション処理は処理中の案件の「移動元ノードID」に設定されている処理が実行されます。
アクション処理の実行は、ノードの移動処理の前に実行されますので、アクション処理では移動処理前の状態のデータが取得されます。
ただし、案件操作でのノード移動処理時にはアクション処理のユーザパラメータは設定されません。「null」になります。
アクション処理で実行される外部プログルムのデータベースへの登録・更新処理等もこのメソッド内のノード移動処理と同じトランザクション内の処理になります。
アクション処理の実行や、ノード移動処理が全て正常に終了されない場合には、登録した全データがロールバックされて、「WorkflowException
」が発生します。
エラーが発生したタイミングによっては、データベース処理のみロールバックされて、作成したXMLファイル情報はそのまま残る場合もありますが、
再度処理を行う時に影響はありません。ゴミデータになります。
ノード移動処理後には、「移動先ノードID」が処理ノードの場合は、処理対象者展開処理が実行されます。
処理対象者展開処理後には、「移動先ノードID」に指定した到達処理が実行されます。
処理対象者展開処理や到達処理はIM-Workflowのシステムパラメータの同期/非同期制御パラメータ「arrive-process-async」が「true(標準)」の場合は、
非同期で実行されます。複数の「移動先ノードID」を指定した場合では、それぞれが非同期で処理されます。
逆の設定の場合は、同期に処理されます。
非同期・同期処理に関わらず、処理対象者展開処理や到達処理は別トランザクション処理になります。
処理対象者展開処理では内部でトランザクション制御を行なっていますが、到達処理の実行処理の内部では、トランザクション制御を行なっていませんので、
実行される到達処理で制御を行う必要があります。
同じく、非同期・同期処理に関わらず、到達処理で失敗した場合でも、このメソッドの処理には影響がありません。正常終了になります。
尚、一覧系のメソッドで、非同期で実行された到達処理等がまだ実行中の場合にはその案件は取得対象外にする場合があります。
その制御の為に、非同期で実行中の到達処理の情報は「imw_t_thread」で管理されています。
ノード移動処理は、IM-Workflowのエンジンのノード移動ロジックで、データの作成、更新、削除処理を行います。
「移動元ノードID」の情報を処理中のデータを保存する「imw_t_actv_task」、「imw_t_actv_executable_user」、「imw_t_actv_user_orgz」等から削除し、
タスク完了データとして「imw_t_cpl_task」、「imw_t_cpl_user」に保存します。
その後「移動先ノードID」の情報を処理中の新データとして、「imw_t_actv_task」、「imw_t_actv_executable_user」、「imw_t_actv_user_orgz」等に保存します。
データベースへの更新処理と共に、XMLファイルの更新処理も行います。
XMLファイルの更新処理は、処理タスクID別に履歴ディレクトリを作成し、その中にXMLファイル情報を作成する処理になります。
作成対象ファイルは、フロー情報XML「flow.xml」、進捗情報XML「progress.xml」、処理履歴情報XML「history.xml」、処理対象者情報XML「executableUser.xml」です。
(※処理対象者情報XML「executableUser.xml」は「移動先ノード」の開始処理時のみ作成します。)
(※処理履歴情報XML「history.xml」、処理対象者情報XML「executableUser.xml」は、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合に作成します。)
格納されるディレクトリは、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」を基に作成します。
「移動元ノード」終了処理時には「ep_」で始まる最終処理IDが付与されます。
「移動先ノード」開始処理時には「sp_」で始まる最終処理IDが付与されます。
標準の設定の場合は、各ファイルは下記に格納されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/progress.xml
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/history.xml
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/executableUser.xml
「移動元ノード」に確認ノードが繋がっている場合、本メソッドの処理により、ノードが移動されても、確認ノードは活性化されません。確認処理できない状態のままです。
確認処理ができるようにするには、ノードの移動処理ではなく、承認処理「 ProcessManager.approve(jp.co.intra_mart.foundation.workflow.application.model.param.ApproveParam, Map)
」を行う必要があります。
- パラメータ:
originalNodeId
- 移動元ノードIDtargetNodeId
- 移動先ノードIDの配列
- 例外:
WorkflowException
- ワークフロー例外
setBranchForwardNode
public void setBranchForwardNode(String branchStartNodeId,
String[] branchForwardNodeIds)
throws WorkflowException
- 分岐開始ノードの分岐条件に遷移する分岐先ノードを設定します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件で、
パラメータで指定した「branchStartNodeId 分岐開始ノードID」に対する分岐開始ノードに
「申請/処理時に分岐先を選択する」の分岐開始条件を設定し、その分岐先ノードとして、
パラメータで指定した「branchForwardNodeIds 分岐先ノードIDの配列」を設定します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
既に、指定した分岐開始ノードに「申請/処理時に分岐先を選択する」の条件が設定されている場合は、
その条件のパラメータ情報である分岐先ノードを指定した「分岐先ノードIDの配列」に上書きし、新しい分岐先を設定します。
分岐開始ノードの条件が「申請/処理時に分岐先を選択する」ではない場合には、分岐開始条件に「申請/処理時に分岐先を選択する」を
新たに指定し、その分岐先ノードとして、指定した「分岐先ノードIDの配列」を設定します。
この場合は、既存条件と追加した新条件の結果は「OR結合」になります。
追加した新条件「申請/処理時に分岐先を選択する」に指定した分岐先ノードには、既存条件の結果に関らず、進むことになります。
本メソッドの処理では、実際に処理中のフローXMLファイルの分岐条件を更新する処理になります。
更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象のファイルは下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、対象分岐開始ノードの分岐条件情報を変更します。
- パラメータ:
branchStartNodeId
- 分岐開始ノードIDbranchForwardNodeIds
- 分岐先ノードIDの配列
- 例外:
WorkflowException
- ワークフロー例外
createMatterHandleAuth
public void createMatterHandleAuth(MatterHandleAuthModel[] matterHandleAuth)
throws WorkflowException
- 案件操作権限者(参照者)情報を新規追加又は更新します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
案件操作権限者(参照者)情報を追加、又は権限情報を更新します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
このメソッドでは案件操作権限者(参照者)情報の設定ファイルへの追加、更新処理のみを行います。
そのため、追加した案件操作権限者(参照者)情報を未完了案件に反映したい場合には、
「expandMatterHandleAuth()
」で案件操作権限者(参照者)の再展開処理を行う必要があります。
追加する案件操作権限者(参照者)情報であるパラメータ「案件操作権限情報」の「案件操作権限者(プラグイン情報)」には
案件操作権限者(参照者)のプラグイン情報が格納されます。
追加するプラグイン情報と同じ権限者設定が、追加対象フローに既に存在する場合は、その権限者の権限フラグ情報の更新処理を行います。
この処理は「updateMatterHandleAuth(MatterHandleAuthModel[])
」で行う処理と同じ処理になります。
追加するプラグイン情報と同じ権限者設定が、追加対象フローに存在しない場合は、その権限者情報を新しく追加する処理を行います。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、 案件操作権限者(参照者)情報を追加・変更する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、案件操作権限者(参照者)情報の変更履歴を保存しています。
標準の設定の場合は、案件操作権限者(参照者)情報の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
案件操作権限者(参照者)情報の更新処理のみ行う場合には「updateMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
案件操作権限者(参照者)情報を削除するには「deleteMatterHandleAuth(MatterHandleAuthModel[])
」や「deleteMatterHandleAuthAll()
」を利用してください。
完了案件に対して、案件操作権限者(参照者)情報を追加するには、「CplMatterHandleManager.createMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
- パラメータ:
matterHandleAuth
- 案件操作権限情報の配列
- 例外:
WorkflowException
- ワークフロー例外
updateMatterHandleAuth
public void updateMatterHandleAuth(MatterHandleAuthModel[] matterHandleAuth)
throws WorkflowException
- 案件操作権限者(参照者)情報を更新します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、
案件操作権限者(参照者)情報の権限フラグを更新します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
このメソッドでは案件操作権限者(参照者)情報の設定ファイルへの更新処理のみを行います。
そのため、追加した案件操作権限者(参照者)情報を未完了案件に反映したい場合には、
「expandMatterHandleAuth()
」で案件操作権限者(参照者)の再展開処理を行う必要があります。
更新する案件操作権限者(参照者)情報であるパラメータ「案件操作権限情報」の「案件操作権限者(プラグイン情報)」には
案件操作権限者(参照者)のプラグイン情報が格納されます。
更新するプラグイン情報と同じ権限者設定が、更新対象フローに既に存在する場合に、その権限者の権限フラグ情報の更新処理を行います。
更新するプラグイン情報と同じ権限者設定が、更新対象フローに存在しない場合は、「WorkflowException
」が発生します。
存在しないデータに対しては自動で追加処理を行いたい場合には「createMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている値を用いて、
トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、 案件操作権限者(参照者)情報を変更する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、案件操作権限者(参照者)情報の変更履歴を保存しています。
標準の設定の場合は、案件操作権限者(参照者)情報の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
案件操作権限者(参照者)情報を追加又は更新するには「createMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
案件操作権限者(参照者)情報を削除するには「deleteMatterHandleAuth(MatterHandleAuthModel[])
」や「deleteMatterHandleAuthAll()
」を利用してください。
完了案件に対して、案件操作権限者(参照者)情報を更新するには、「CplMatterHandleManager.updateMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
- パラメータ:
matterHandleAuth
- 案件操作権限情報の配列
- 例外:
WorkflowException
- ワークフロー例外
deleteMatterHandleAuth
public void deleteMatterHandleAuth(MatterHandleAuthModel[] matterHandleAuth)
throws WorkflowException
- 案件操作権限者(参照者)情報を削除します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、案件操作権限者(参照者)情報を削除します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
このメソッドでは案件操作権限者(参照者)情報の設定ファイルへの削除処理のみを行います。
そのため、削除した案件操作権限者(参照者)情報を未完了案件に反映したい場合には、
「expandMatterHandleAuth()
」で案件操作権限者(参照者)の再展開処理を行う必要があります。
削除する案件操作権限者(参照者)情報であるパラメータ「案件操作権限情報」の「案件操作権限者(プラグイン情報)」には
案件操作権限者(参照者)のプラグイン情報が格納されます。
削除するプラグイン情報と同じ権限者設定が、更新対象フローに既に存在する場合に、その権限者の削除処理を行います。
削除するデータが存在しない場合でも、例外は発生せずに処理が終了します。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、 案件操作権限者(参照者)情報を削除する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、案件操作権限者(参照者)情報の変更履歴を保存しています。
標準の設定の場合は、案件操作権限者(参照者)情報の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
案件操作権限者(参照者)情報を追加又は更新するには「createMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
案件操作権限者(参照者)情報を全て削除するには「deleteMatterHandleAuthAll()
」を利用してください。
完了案件に対して、案件操作権限者(参照者)情報を削除するには、「CplMatterHandleManager.deleteMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
- パラメータ:
matterHandleAuth
- 案件操作権限情報の配列
- 例外:
WorkflowException
- ワークフロー例外
deleteMatterHandleAuthAll
public void deleteMatterHandleAuthAll()
throws WorkflowException
- 案件操作権限者(参照者)情報を全て削除します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、案件操作権限者(参照者)情報を全て削除します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
このメソッドでは案件操作権限者(参照者)情報の設定ファイルへの全削除処理のみを行います。
そのため、削除した案件操作権限者(参照者)情報を未完了案件に反映したい場合には、
「expandMatterHandleAuth()
」で案件操作権限者(参照者)の再展開処理を行う必要があります。
本メソッドで実際に更新する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、 案件操作権限者(参照者)情報を削除する処理を行います。
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、案件操作権限者(参照者)情報の変更履歴を保存しています。
標準の設定の場合は、案件操作権限者(参照者)情報の変更履歴は下記に保存されます。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/userTransfer.xml
案件操作権限者(参照者)情報を追加又は更新するには「createMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
案件操作権限者(参照者)情報を一部削除するには「deleteMatterHandleAuth(MatterHandleAuthModel[])
」を利用してください。
完了案件に対して、案件操作権限者(参照者)情報を全て削除するには、「CplMatterHandleManager.deleteMatterHandleAuthAll()
」を利用してください。
- 例外:
WorkflowException
- ワークフロー例外
expandMatterHandleAuth
public void expandMatterHandleAuth()
throws WorkflowException
- 未完了案件に対して、案件操作権限者(参照者)を再展開します。
コンストラクタに指定したシステム案件IDに該当する処理中の未完了案件に対して、 案件操作権限者(参照者)情報を再展開します。
コンストラクタで指定するシステム案件IDは必ず未完了状態の案件を指定する必要があります。
未完了状態の案件ではないシステム案件IDを指定した場合には、「WorkflowException
」が発生します。
本メソッドで展開処理を行う為に、案件操作権限者(参照者)情報を取得する対象XMLファイルは、処理中のフローXML「flow.xml」になります。
最新の「flow.xml」を取得するには、案件テーブル「imw_t_actv_matter」の最終処理ID「LAST_PROCESS_ID」に保存されている
値を用いて、トランザクションファイルディレクトリから取得します。
標準の設定の場合は、取得対象の「flow.xml」は下記に格納されています。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/task/{%最終処理ID%}/flow.xml
上記のファイルに対して、案件操作権限者(参照者)を取得し、再展開処理を行います。
再展開処理は該当案件の「申請基準日」を基準に行います。
再展会処理は、未完了案件の案件操作権限者(参照者)のデータベースデータやXMLファイルデータを更新します。
更新対象のテーブルは未完了案件の案件操作権限者(参照者)を保存している「imw_t_actv_matter_handle_user」です。
トランザクションファイルレベルが「[2]:全てのファイル情報を作成」の場合は、同じ案件操作権限者(参照者)がXMLファイルで保存されています。
そのファイルの更新処理も同じく行います。
ファイルの格納場所は、標準設定の場合には下記になります。
・{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/matterHandleUser.xml
→ 案件操作、参照の権限者情報。
再展開処理により、権限者データベースを更新する処理は、該当の権限者情報を全て削除し、全データを再作成(=展開)する処理になります。
再展開の処理順は、「データベースの権限者情報削除」→「データベースの権限者情報再展開」→「XMLファイルの入替」の順で行います。
データベースの処理の途中、もしくはファイルの処理でエラーが発生した場合には、処理が中断され「WorkflowException
」が発生します。
このメソッドでは内部でトランザクション制御を行なっていません。外部で制御を行う必要があります。
正常終了処理後に、トランザクションをロールバックした場合はデータベースの更新データのみロールバックされます。
更新した履歴ファイルやトランザクションファイルデータは元に戻らないので、ご注意下さい。
展開処理を行う前に、フローXML「flow.xml」の案件操作権限者(参照者)設定を変更するには、
「createMatterHandleAuth(MatterHandleAuthModel[])
」や「deleteMatterHandleAuth(MatterHandleAuthModel[])
」等を利用してください。
完了案件に対して、案件操作権限者(参照者)を再展開するには「 CplMatterHandleManager.expandMatterHandleAuth()
」を利用してください。
- 例外:
WorkflowException
- ワークフロー例外
reserveCancel
public void reserveCancel(ReserveCancelParam reserveCancelParam,
String nodeId)
throws WorkflowException
- 保留解除処理を実行します。
管理者権限で、指定したノードの保留削除処理を行います。
このメソッドでは内部でトランザクションの制御処理を行なっています。
メソッドの実行前に、ユーザトランザクションを終了状態にして置く必要があります。
本メソッドでは、ユーザ権限で保留を削除する「ProcessManager.reserveCancel(ReserveCancelParam, Map)
」と同じ処理を行いますが、
パラメータで削除対象のノードを指定することができます。後、ユーザパラメータが指定できませんので、
アクション処理のユーザパラメータは設定されません。「null」になります。
実行されるアクション処理のパラメータ情報は「ProcessManager.reserveCancel(ReserveCancelParam, Map)
」と一致します。
アクション処理で、管理者権限での実行かを判別する方法はありません。
尚、「reserveCancelParam 保留解除用パラメータ情報」に設定される「権限者コード」は無視されますので、代理権限での実行はできません。
詳しい動作については、「ProcessManager.reserveCancel(ReserveCancelParam, Map)
」を参照してください。
- パラメータ:
reserveCancelParam
- 保留解除用パラメータ情報nodeId
- ノードID
- 例外:
WorkflowException
- ワークフロー例外
Copyright © 2000-2015 NTT DATA INTRAMART CO.,LTD.. All Rights Reserved.