使用例¶
ここでは、Java APIの主な使用例をプログラムの実装例と共に説明します。
実装例で使用しているクラスの詳細は、 Java API仕様書 を参照ください。
(実装例では、説明を簡潔にするため例外処理が省略されています。)
ユーザー情報の取得¶
ユーザー情報の取得で使用する主なクラスは以下の通りです。
- UserInfomationManager
- OrganizationTable
- MemberTable
注釈
1~3はすべてjp.co.itarchitects.xFlow.define.userパッケージです。
UserInfomationManagerはユーザー情報の検索や更新を行うクラスです。
このクラスを使用して、OrganizationTable(所属する組織の情報)やMemberTable(ユーザー情報)等を取得します。
以下は、ユーザーのIDを指定して所属する組織の情報を取得する実装例です。
String memberID = "A10007";
UserInfomationManager userInfomationManager = new UserInfomationManager();
List<OrganizationTable> organizationTables = userInfomationManager.doLookUpOrganizationVersion(memberID, true);
申請¶
申請は、処理を実行するクラスと、申請データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームでの申請に使用するのは、以下のクラスです。
- ApplyAgent
- ApplyDataBuilder4XML
- ApplyOptionBuilder (任意)
注釈
1~3はすべてjp.co.itarchitects.xFlow.actionパッケージです。
ApplyAgentは申請処理を実行するクラスです。
このクラスのexecuteメソッドに、申請データを渡して申請処理を実行します。
申請データは、ApplyDataBuilder4XMLに対して設定します。
このクラスのdoInspectメソッドで、申請者のユーザー情報や申請内容など申請時に必須となるデータを設定します。
ApplyOptionBuilderは、申請者コメントや添付ファイルなど、必須項目以外のデータを設定するためのクラスです。
ApplyOptionBuilderの指定は必須ではありませんので、必要に応じてご利用ください。
以下は申請の実装例です。
//申請データを設定
ApplyDataBuilder4XML applyData = new ApplyDataBuilder4XML();
applyData.doInspect(
"A10007" //申請者のID
, "OrgVer_20091027094625164" //申請者が所属する組織の組織コード
, "121000" //申請者が所属するグループのグループコード
, "105" //申請者の役職コード
, "APIによる申請" //申請件名
, "BD20060512104350043_1000" //申請フォームのキー
, new File("ringisho.xml")); //申請内容が保存されたXMLファイル
//申請処理を実行
ApplyAgent applyAgent = new ApplyAgent();
applyAgent.execute(applyData, ApplyAgent.APPLY);
ヒント
ApplyDataBuilder4XML#doInspectで指定する申請者の所属する組織情報(組織コードなど)の取得については「ユーザー情報の取得」を参照ください。
上記の実装例で申請データに設定している申請フォームのキーは、申請するフォームを特定するために使用します。
このキーはjp.co.itarchitects.xFlow.define.bdf
パッケージのBdfManagerと、BdfTableというクラスを使用して取得できます。
以下は申請フォームのキー取得の実装例です。
BdfManager bdfManager = new BdfManager();
List<BdfTable> bdfTables
= bdfManager.doLookupBdfList(
"OrgVer_20091027094625164" //申請者が所属する組織の組織コード
, "121000" //申請者が所属するグループのグループコード
, "105" //申請者の役職コード
, "A10007"); //申請者のID
//申請フォームの情報を取得
BdfTable bdfTable = bdfTables.get(0);
String key = bdfTable.getDefineDataKey(); //申請フォームのキー
承認¶
承認は、処理を実行するクラスと、承認データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームの承認に使用するのは、以下のクラスです。
- ApproveAgent
- ApproveDataBuilder4XML
- ApproveOptionBuilder (任意)
注釈
1~3はすべてjp.co.itarchitects.xFlow.actionパッケージです。
ApproveAgentは承認処理を実行するクラスです。
このクラスのexecuteメソッドに、承認データなどを渡して承認処理を実行します。
承認データは、ApproveDataBuilder4XMLに対して設定します。
このクラスのdoInspectメソッドで、承認者のIDや承認内容など承認時に必須となるデータを設定します。
ApproveOptionBuilderは、承認者コメントや添付ファイルなど、必須項目以外のデータを設定する場合に使用します。
ApproveOptionBuilderの指定は必須ではありませんので、必要に応じてご利用ください。
以下は承認の実装例です。
//承認データを設定
ApproveDataBuilder4XML approveData = new ApproveDataBuilder4XML();
approveData.doInspect(
"A10015" //承認者のID
, "A10007_20100127171539811" //ワークフローの案件ID
, "00001" //承認者を特定するための項番
, new File("ringisho.xml")); //承認内容が保存されたXMLファイル
//承認処理を実行
ApproveAgent approveAgent = new ApproveAgent();
approveAgent.execute(approveData, ApproveAgent.APPROVE);
ヒント
承認に必要なワークフロー案件のID、承認者を特定するための項番の取得は、「検索」 を参照ください。
検索¶
申請・承認した案件情報や、案件に関わるユーザー情報の検索に使用する主なクラスは以下の通りです。
- WorkflowStatusManager
- WorkflowStatusTable
- WorkflowMemberStatusTable
注釈
1~3はすべてjp.co.itarchitects.xFlow.statusパッケージです。
WorkflowStatusManagerは案件情報を検索するクラスです。
このクラスを使用してWorkflowStatusTable
(案件情報)、WorkflowMemberStatusTable
(案件に関わるユーザーの情報)等を検索します。
WorkflowStatusManagerでは案件情報の検索用に複数のメソッドが提供されています。代表的なメソッドは以下の通りです。
- doSelectActiveWorkflowStatusTables未完了の申請案件を対象に検索します。
- doSelectRepositedWorkflowStatusTables完了・否認済みの申請案件を対象に検索します。
- doSelectWorkflowStatusTables完了・否認・未完了を問わず、すべての申請案件を対象として検索します。
上記のメソッドは、必要に応じて複数の検索条件を指定できます。
検索条件は、java.util.Map クラスにWorkflowStatusManagerで定義された検索条件用の定数と、検索したい値の組合せを指定します。(検索条件を指定せずに実行すると全ての申請案件が対象となります。)
以下は、申請者のグループ名が「第一営業部」で、決裁日が「2013/09/01」から「2013/09/31」までの案件情報を検索する場合の実装例です。
//検索条件の作成
String groupName = "第一営業部"; //グループ名
String startDecideDate = "2013/09/01"; //決裁日(開始)
String endDecideDate = "2013/09/31"; //決裁日(終了)
Map<String, String> searchParam = new HashMap<String, String>();
searchParam.put(WorkflowStatusManager.APPLYER_GROUP_NAME, groupName);
searchParam.put(WorkflowStatusManager.START_DECIDE_DATE, startDecideDate);
searchParam.put(WorkflowStatusManager.END_DECIDE_DATE, endDecideDate);
//検索を実行
WorkflowStatusManager statusManager = new WorkflowStatusManager();
List<WorkflowStatusTable> workflowStatusTables = statusManager.doSelectRepositedWorkflowStatusTables(searchParam);
また、案件に関わるユーザーの情報(WorkflowMemberStatusTable)を取得する場合はdoLookUpWorkflowMemberStatusメソッドを使用します。
以下は、上記の実装例で検索した案件情報(WorkflowStatusTable)の案件IDを元に、その案件に関わるユーザーの情報を取得する実装例です。
WorkflowStatusTable statusTable = workflowStatusTables.get(0);
String workflowID = statusTable.getWorkflowID();
List<WorkflowMemberStatusTable> memberStatusTables = statusManager.doLookUpWorkflowMemberStatus(workflowID);
ヒント
WorkflowMemberStatusTable#getWorkflowMemberNodeNoメソッドで申請者や承認者を一意に特定するための項番が取得できます。(項番はAPIでの承認などに使用します。)
申請・承認処理の拡張¶
通常の申請・承認処理を拡張するための抽象クラスが提供されています。主なクラスは以下の通りです。
- FinalProcessAfterApply
申請処理を拡張する場合に使用します。
- FinalProcessAfterApprove
承認処理を拡張する場合に使用します。
- FinalProcessAfterSanction
決裁処理を拡張する場合に使用します。
注釈
1~3はすべてjp.co.itarchitects.xFlow.actionパッケージです。
抽象クラスを継承した後処理プログラムを開発することで、例えば申請時の入力内容を外部システムに登録するといった拡張を行えます。
抽象クラスは、申請、承認など処理毎に提供されています。拡張する処理に合わせて継承するクラスを選択してください。
後処理プログラムによる拡張に必要な手順を以下に示します。
- 各抽象クラスを継承した後処理プログラム用のクラスを作成します。
- 作成したクラスのdoFinalProcessメソッドで拡張内容に合わせたプログラムを実装します。
各抽象クラスではdoFinalProcessメソッドがabstractで定義されており、このメソッドが各処理のタイミングでワークフローシステムによって実行されます。doFinalProcessメソッドは引数に処理を実行したユーザーの情報を格納したWorkflowMemberStatusTableを受け取ります。申請時の後処理プログラムであれば申請者の情報が格納されています。
作成したプログラムは、以下の手順でワークフローシステムに登録してください。
- 管理権限を持ったユーザでワークフローシステムにログインします。
- [管理] - [システム設定]をクリックします。
- サイドバーから[オプション]をクリックします。
- [APIオプション]タブ - [後処理プログラム]に、後処理プログラムごとの設定項目に、作成したクラスの完全修飾名を入力します。
- [保存]ボタンをクリックします。
- ワークフローシステムを再起動します。
以下は申請時の抽象クラス(FinalProcessAfterApply)の実装例です。
public class FinalProcessAfterApply extends FinalProcessAfterApply {
public void doFinalProcess(
WorkflowMemberStatusTable workflowMemberStatusTable) {
System.out.println("Applied");
}
}
サンプルプログラム¶
[API/sample/java_sample]に「使用例」で説明したAPIのサンプルプログラムが付属しています。
- ユーザー情報の取得
jp/co/itarchitects/javasample/UserSample.java
- 申請
jp/co/itarchitects/javasample/ApplySample.java
- 承認
jp/co/itarchitects/javasample/ApproveSample.java
- 検索
jp/co/itarchitects/javasample/SearchSample.java
- 申請・承認処理の拡張
jp/co/itarchitects/javasample/FinalProcessAfterApplySample.java