jp.co.intra_mart.foundation.workflow.application.process
クラス ApplyManager
java.lang.Object
jp.co.intra_mart.foundation.workflow.application.process.ApplyManager
public class ApplyManager
- extends Object
申請マネージャ。
案件の起票・申請処理を行うことができます。
また、起票・申請処理時を行う際に設定が必要なノードがあれば、そのノードの関連情報を取得することができます。
設定が必要なノードは、確認ノード、動的承認ノード、横・縦配置ノード、分岐開始ノードです。
申請マネージャの設定が必要なノード情報等を取得する処理では、処理マネージャ「ProcessManager
」とは違い、マスタデータを用いてデータ取得を行なっています。
マスタデータに変更があった場合には、その情報が反映された状態でデータが取得されます。
詳細は各メソッドの説明を参照してください。
- 導入されたバージョン:
- 7.2
- 関連項目:
ProcessManager
ApplyManager
public ApplyManager(String loginGroupId,
String localeId)
- コンストラクタ
引数で指定したログイングループID、ロケールIDで申請マネージャを新しく生成します。
- パラメータ:
loginGroupId
- ログイングループIDlocaleId
- ロケールID
draft
public ApplyResultModel draft(DraftParam draftParam)
throws WorkflowException
- 案件の起票処理を行います。
このメソッドでは内部でトランザクションの制御処理を行なっています。
メソッドの実行前に、ユーザトランザクションを終了状態にして置く必要があります。
起票処理時には、動的承認ノード、横・縦配置ノード、分岐開始ノードに必要な設定を行うことができません。
ただし、起票処理を行う前に、フロー情報にテンプレートノードが存在する場合は、そのテンプレートノードは自動で展開されます。
パラメータの「ユーザデータID」が未指定(nullまたは、空文字)の場合は、起票処理時に採番されるシステム案件IDと同じ値が自動で設定されます。
パラメータの「申請処理対象者情報(プラグイン情報)」に値を設定することで、申請する人を指定することができます。
申請処理対象者情報はプラグイン情報で指定します。
例1)「ユーザA」を指定する場合。
・extensionPointId :「jp.co.intra_mart.workflow.plugin.authority.node.apply」
・pluginId :「jp.co.intra_mart.workflow.plugin.authority.node.apply.user」
・parameter :「userA」
例2)組織(サンプルデータのサンプル課11)を指定する場合。
・extensionPointId :「jp.co.intra_mart.workflow.plugin.authority.node.apply」
・pluginId :「jp.co.intra_mart.workflow.plugin.authority.node.apply.department」
・parameter :「comp_sample_01^comp_sample_01^dept_sample_11」
組織を申請処理対象者情報として指定した場合に、その組織の誰でも申請できる1つの案件が作成されます。
組織に所属されているそれぞれの人が起票できる複数案件が作成されることではありません。
※申請ノードに既に申請処理対象者が指定されている場合には、指定したパラメータ情報に上書きされます。
起票処理の内部の詳細処理については、「apply(ApplyParam, Map)
」の【案件起票処理】までの説明を参照してください。
- パラメータ:
draftParam
- 起票用パラメータ情報
- 戻り値:
- ApplyResultModel 申請結果情報
- 例外:
WorkflowException
- ワークフロー例外
apply
public ApplyResultModel apply(ApplyParam applyParam,
Map<String,Object> userParam)
throws WorkflowException
- 申請処理を行います。
このメソッドでは内部でトランザクションの制御処理を行なっています。
メソッドの実行前に、ユーザトランザクションを終了状態にして置く必要があります。
「applyParam 申請用パラメータ情報」に設定されている内容での申請処理を行います。
申請用パラメータ情報の「ユーザデータID」が未指定(nullまたは、空文字)の場合は、申請処理時に採番されるシステム案件IDと同じ値が自動で設定されます。
「申請実行者コード」と「申請権限者コード」が異なる場合には、代理権限での申請処理になります。
申請者の組織情報を指定する場合には、「会社コード」、「組織セットコード」、「組織コード」の3つのパラメータをセットで指定します。
申請時に動的承認・確認ノードの処理対象者を指定する場合には、申請用パラメータ情報の「動的・確認ノード設定情報の配列」を設定します。
申請時に横・縦配置ノードを展開したり、処理対象者を設定する場合には、申請用パラメータ情報の「横配置・縦配置ノード設定情報の配列」を設定します。
申請時に分岐開始ノードの分岐先を指定する場合には、申請用パラメータ情報の「分岐先選択情報の配列」を設定します。
申請ノードで設定できる各ノード情報は「getConfigSetToApply(String, String)
」等で取得できますが、
申請処理時に特にチェック処理は行なっていません。設定可能なノードの指定とは関係なく、処理できます。
申請処理を行う前に、フロー情報にテンプレートノードが存在する場合は、そのテンプレートノードは自動で展開されます。
他に展開が必要な横・縦配置ノードは、申請用パラメータ情報に展開情報が設定されていれば、展開されますが、
申請ノードの直後に、展開が必要な横・縦配置ノードが存在し、そのノードが展開されてない状態で、申請処理が実行されると、
例外「WorkflowException
」が発生します。申請ノード直後に横・縦配置ノードがある場合には、必ずパラメータに展開情報を設定する必要があります。
一時保存案件から申請処理を行った場合には、申請処理を行う前にその一時保存案件の削除処理を行います。
削除処理後に、【案件起票処理】(=申請ノードを申請待ち状態に変更する)を行います。
起票処理では、案件開始処理から始め、案件を処理して行く為に必要なデータの作成処理を行います。
案件開始の前には、フローの定義に設定されている「案件開始前処理」を行います。
下記の拡張ポイントにプラグイン処理を拡張することで、処理を追加することができます。
・案件開始前処理の拡張ポイント:「jp.co.intra_mart.workflow.plugin.event.matter.start.process」
案件開始前処理終了後に、案件開始処理を行います。
案件開始処理では、「imw_t_actv_matter_」で始まる未完了案件関連データベースの案件関連テーブルに必要なデートの登録処理や、
トランザクションデータXMLファイルの作成処理を行います。
申請用パラメータ情報に指定した、申請基準日を基に、マスタデータテーブルからフロー設定関連情報を収取し、
申請で必要なマスタフローXMLを作成します。
XMLにマスタデータは全て格納することで、申請処理後にはマスタデータへの参照処理は行わなくなります。
逆に、マスタデータに変更があった場合でも、その情報は既に処理中の案件には反映されません。
標準設定の場合、マスタフロー情報である「masterflow.xml」は下記に格納されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/masterflow.xml
尚、マスターのルート情報である「route.xml」は下記に格納されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/route.xml
尚、トランザクションファイルレベル設定が「[2]:全てのファイル情報を作成」の場合には、案件関連情報と参照者情報が保存されます。
標準設定の場合、案件関連情報「matter.xml」は下記に保存されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/matter.xml
標準設定の場合、参照者情報「matterHandleUser.xm」は下記に保存されます。(※実際のファイル作成処理は到達処理と同レベルの非同期処理で行われます。)
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/matterHandleUser.xml
起票処理では、フローの開始ノードの処理で案件開始処理を行い、上記のデータを作成し、申請ノードを処理待ち状態に変更して置くまでの処理を行います。
起票処理が終了した後に、申請待ち状態になっている申請ノードで【案件申請処理】を行います。
申請処理を行う前に、まずパラメータに設定されている分岐開始ノードの分岐先設定や、動的承認、横・縦配置ノードの設定情報を基に、
処理フロー情報の変更処理を行います。この変更されたフロー情報は申請処理が終了するまでに、そのまま使用されます。
例えば、アクション処理等でフロー情報XMLを変更しても、その情報は処理中のフロー情報には反映されません。
案件申請処理は、申請ノードを終了し、次のノードへの移動処理になります。
ノードの移動処理では、ユーザのアクション処理と到達処理が実行されます。申請ノードの次が終了ノードの場合は案件終了時処理も実行されます。
下記の拡張ポイントのプラグイン処理を拡張することで、処理を追加することができます。
アクション処理:「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」
アクション処理は申請ノードに設定されている処理が実行されます。
アクション処理の実行は、ノードの移動処理の前に実行されます。アクション処理では移動処理前の状態のデータが取得されます。
アクション処理にはパラメータで設定した「userParam ユーザパラメータ」がそのまま渡されます。
アクション処理に渡したいデータがある場合には、「ユーザパラメータ」を利用してください。
アクション処理で実行される外部プログルムのデータベースへの登録・更新処理等もこのメソッド内のノード移動処理と同じトランザクション内の処理になります。
アクション処理の実行や、ノード移動処理が全て正常に終了されない場合には、登録した全データがロールバックされて、「WorkflowException
」が発生します。
エラーが発生したタイミングによっては、データベース処理のみロールバックされて、作成したXMLファイル情報はそのまま残る場合もありますが、
再度処理を行う時に影響はありません。ゴミデータになります。
申請ノードのアクション処理では、処理結果として「案件番号」を返すことができます。
アクション処理の実行結果、案件番号が返却された場合には、その値で案件データを更新します。申請時のパラメータに指定した案件番号より優先されます。
ノード移動処理は、IM-Workflowのエンジンのノード移動ロジックで、データの作成、更新、削除処理を行います。
起票処理で作成された申請ノードの情報を処理中のデータを保存する「imw_t_actv_task」、「imw_t_actv_executable_user」、「imw_t_actv_user_orgz」等から削除し、
タスク完了データとして「imw_t_cpl_task」、「imw_t_cpl_user」に保存します。
その後申請ノードの次のノードの情報を処理中の新データとして、「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」です。
案件の参照者がある場合には「matterHandleUser.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
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/matterHandleUser.xml
ノード移動処理後には、申請ノードの次のノードが処理ノードの場合は、処理対象者展開処理が実行されます。
案件に参照者が設定されている場合には、このタイミングで一緒に展開処理が実行されます。
処理対象者展開処理後には、申請ノードの次のノードに指定した到達処理が実行されます。
処理対象者展開処理や到達処理はIM-Workflowのシステムパラメータの同期/非同期制御パラメータ「arrive-process-async」が「true(標準)」の場合は、
非同期で実行されます。逆の設定の場合は、同期に処理されます。
非同期・同期処理に関わらず、処理対象者展開処理や到達処理は本メソッドとは別トランザクション処理になります。
処理対象者展開処理では内部でトランザクション制御を行なっていますが、到達処理の実行処理の内部では、トランザクション制御を行なっていませんので、
実行される到達処理で制御を行う必要があります。
同じく、非同期・同期処理に関わらず、到達処理で失敗した場合でも、このメソッドの処理には影響がありません。正常終了になります。
尚、一覧系のメソッドで、非同期で実行された到達処理等がまだ実行中の場合にはその案件は取得対象外にする場合があります。
その制御の為に、非同期で実行中の到達処理の情報は「imw_t_thread」で管理されています。
申請ノードに確認ノードが繋がっている場合には、確認ノードを初期化し、確認可能な状態に変更します。
確認ノードのデータと権限者情報を「imw_t_confirm」、「imw_t_confirm_user」、「imw_t_confirm_orgz」に作成し、関連するXMLファイルを作成・初期化します。
確認ノードの権限者作成処理は、処理者展開処理と同じく非同期処理で行います。処理者展開処理を実行するタイミングで一緒に処理されます。
作成される確認ノード関連XMLファイルは、標準設定の場合は下記に格納されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/confirm.xml
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/operation_history/confirmEnableUser.xml
申請処理が終了した後に、添付ファイルが存在する場合には、ファイルの移動処理を行います。
添付ファイルの一時領域から、案件のトランザクションファイルデータフォルダに移動します。
標準の設定の場合、添付ファイルは下記に格納されます。
※{%StorageService%}/storage/workflow/data/{%ログイングループID%}/transaction/yyyymm/dd/hh/{%システム案件ID%}/attachfile
添付ファイル移動処理後、全ての処理が終了した後に、根回しメールの送信処理を行います。
メール送信は内部トランザクションを終了した後に実行します。送信処理でエラーになった場合でも、本メソッドの処理には影響ありません。
申請ノードの次のノードが分岐ノードの場合は、分岐先の判別処理を行い、決定した分岐先への移動処理を行います。
ノード移動処理の内部処理は、起票後の申請時の処理と同様です。
ただし、分岐ノードの判別で、次のノードに移動した場合に、本メソッドの申請処理により実行される到達処理は、
分岐の判断で移動して到達したノードの到達処理が実行されます。
分岐先の判別のために、実行される分岐ロジック(分岐開始ノードに設定されているプラグイン)は、
本メソッドで実行されるアクション処理やノードの移動処理と同じトランザクションになりますので、
申請ノードの次が分岐ノードで、分岐先判別処理で例外が発生した場合は、申請できず、例外「WorkflowException
」が発生します。
申請ノードの次のノードが終了ノードの場合は、処理中の案件は終了されます。
案件の終了処理については、「ProcessManager.approve(jp.co.intra_mart.foundation.workflow.application.model.param.ApproveParam, Map)
」の
【案件終了処理】説明を参照してください。
- パラメータ:
applyParam
- 申請用パラメータ情報userParam
- ユーザパラメータ
- 戻り値:
- ApplyResultModel 申請結果情報
- 例外:
WorkflowException
- ワークフロー例外
getAuthUserOrgz
public AuthUserOrgzModel[] getAuthUserOrgz(String flowId,
String baseDate,
String authUserCd)
throws WorkflowException
- 特定のユーザが特定のフローによって案件を申請する際に選択可能な所属組織情報を取得します。
マスタデータのデータベースやXMLファイル情報を基に、指定したフローで該当ユーザが申請時に選択できる所属組織情報を取得します。
この処理では、申請対象のマスタXML情報から申請ノード情報を取得し、そのノードに設定されている申請ノード権限者情報プラグイン情報を取得し、
そのプラグインの実行により必要なデータを取得します。
実行対象メソッドは、各プラグインの
「 IWorkflowAuthorityUserOrgzEventListener.getTargetUserOrgzList(jp.co.intra_mart.foundation.workflow.listener.param.WorkflowAuthorityParameter, jp.co.intra_mart.foundation.workflow.listener.param.WorkflowMatterParameter)
」
インタフェースの実装メソッドになります。
このメソッドでは代理設定情報は考慮されていません。代理権限で代理先ユーザの所属組織を取得したい場合は、
代理先ユーザコードをパラメータに指定する必要があります。
指定したユーザが選択可能な組織情報が存在しない場合は、サイズ0の空オブジェクトを返却します。
対象プラグイン実行に必要なマスタ情報を取得する為に必要なデータ取得に失敗した場合は、例外「WorkflowException
」が発生します。
起票・申請処理後に、展開されたユーザ情報から(「imw_t_actv_user_orgz」テーブル)選択できる所属組織情報を取得するには、
「ProcessManager.getAuthUserOrgz(String)
」を利用してください。
- パラメータ:
flowId
- フローIDbaseDate
- 申請基準日("yyyy/MM/dd"形式の文字列)authUserCd
- 権限者コード
- 戻り値:
- AuthUserOrgzModel[] 権限者所属組織情報の配列
- 例外:
WorkflowException
- ワークフロー例外
getConfigSetToApply
public NodeConfigSetToApplyModel getConfigSetToApply(String flowId,
String applyBaseDate)
throws WorkflowException
- 申請を行う際に処理権限者等の設定が可能なノード情報を取得します。
申請処理を行う際に、設定が可能な動的承認ノード、確認ノード、横・縦配置ノード、分岐開始ノードが存在する場合には、
その設定が可能なノード関連情報を取得できます。
このメソッドでは、設定が可能なノード情報を取得する際に、その設定対象ノードに初期値で設定されている処理権限者情報を除いて取得します。
処理対象者の初期化設定ができるノードは動的承認ノード、確認ノード、横・縦配置ノードです。
初期値で指定した処理対象者情報を含めて取得したい場合には、「getConfigSetToApplyWithProcessTarget(String, String)
」を利用してください。
返却モデルの「NodeConfigSetToApplyModel 設定対象ノードセット情報(申請用)」には申請ノードの各情報と、設定が可能なノードがあればその情報が格納されます。
・申請ノードで、ある確認ノードの処理対象者を設定可能な場合は返却モデル内の「設定対象確認ノード情報(申請用)の配列」にその確認ノード情報が設定されます。
・申請ノードで、ある動的承認ノードの処理対象者を設定可能な場合は返却モデル内の「設定対象動的承認ノード情報(申請用)の配列」にその動的承認ノード情報が設定されます。
・申請ノードで、ある横配置ノードの展開設定や処理対象者を設定可能な場合は返却モデル内の「設定対象横配置ノード情報(申請用)の配列」にその横配置ノード情報が設定されます。
・申請ノードで、ある縦配置ノードの展開設定や処理対象者を設定可能な場合は返却モデル内の「設定対象縦配置ノード情報(申請用)の配列」にその縦配置ノード情報が設定されます。
・申請ノードで、ある分岐開始ノードの分岐先を設定可能な場合は返却モデル内の「設定対象分岐開始ノード情報(申請用)の配列」にその分岐開始ノード情報が設定されます。
各項目に対して、設定ができない場合には、該当項目にサイズ0にオブジェクトが設定されます。
このメソッドで必要なデータの取得は、マスタデータを用いて行なっています。マスタデータに変更がある場合には、その情報が反映されて取得されます。
起票・申請処理後に、承認処理で設定が可能なノード情報を取得するには、「ProcessManager.getConfigSetToProcess()
」を利用してください。
- パラメータ:
flowId
- フローIDapplyBaseDate
- 申請基準日("yyyy/MM/dd"形式の文字列)
- 戻り値:
- NodeConfigSetToApplyModel 設定対象ノードセット情報(申請用)
- 例外:
WorkflowException
- ワークフロー例外
getConfigSetToApplyWithProcessTarget
public NodeConfigSetToApplyModel getConfigSetToApplyWithProcessTarget(String flowId,
String applyBaseDate)
throws WorkflowException
- 申請を行う際に処理権限者等の設定が可能なノード情報を初期値で設定した処理権限者情報と共に取得します。
申請処理を行う際に、設定が可能な動的承認ノード、確認ノード、横・縦配置ノード、分岐開始ノードが存在する場合には、
その設定が可能なノード関連情報を取得できます。
このメソッドでは、設定が可能なノード情報を取得する際に、その設定対象ノードに初期値で設定されている処理権限者情報を含めて取得します。
処理対象者の初期化設定ができるノードは動的承認ノード、確認ノード、横・縦配置ノードです。
初期値で指定した処理対象者情報を除いて取得したい場合には、「getConfigSetToApply(String, String)
」を利用してください。
返却モデルの「NodeConfigSetToApplyModel 設定対象ノードセット情報(申請用)」には申請ノードの各情報と、設定が可能なノードがあればその情報が格納されます。
・申請ノードで、ある確認ノードの処理対象者を設定可能な場合は返却モデル内の「設定対象確認ノード情報(申請用)の配列」にその確認ノード情報が設定されます。
・申請ノードで、ある動的承認ノードの処理対象者を設定可能な場合は返却モデル内の「設定対象動的承認ノード情報(申請用)の配列」にその動的承認ノード情報が設定されます。
・申請ノードで、ある横配置ノードの展開設定や処理対象者を設定可能な場合は返却モデル内の「設定対象横配置ノード情報(申請用)の配列」にその横配置ノード情報が設定されます。
・申請ノードで、ある縦配置ノードの展開設定や処理対象者を設定可能な場合は返却モデル内の「設定対象縦配置ノード情報(申請用)の配列」にその縦配置ノード情報が設定されます。
・申請ノードで、ある分岐開始ノードの分岐先を設定可能な場合は返却モデル内の「設定対象分岐開始ノード情報(申請用)の配列」にその分岐開始ノード情報が設定されます。
各項目に対して、設定ができない場合には、該当項目にサイズ0にオブジェクトが設定されます。
このメソッドで必要なデータの取得は、マスタデータを用いて行なっています。マスタデータに変更がある場合には、その情報が反映されて取得されます。
起票・申請処理後に、承認処理で設定が可能なノード情報を初期値で設定した処理権限者情報と共に取得するには、「ProcessManager.getConfigSetToProcessWithProcessTarget()
」を利用してください。
- パラメータ:
flowId
- フローIDapplyBaseDate
- 申請基準日("yyyy/MM/dd"形式の文字列)
- 戻り値:
- NodeConfigSetToApplyModel 設定対象ノードセット情報(申請用)
- 例外:
WorkflowException
- ワークフロー例外
Copyright © 2000-2015 NTT DATA INTRAMART CO.,LTD.. All Rights Reserved.