使用例¶
ここでは、SOAP APIの主な使用例をプログラムの実装例と共に説明します。
実装例で使用しているクラスの詳細は、 SOAP API仕様書 を参照ください。
(実装例では、説明を簡潔にするため例外処理が省略されています。)
ユーザー情報の取得¶
ユーザー情報の取得で使用する主なクラスは以下の通りです。
- WsUserInfomationManager
- WsOrganizationBean
- WsMemberBean
注釈
1~3はすべてjp.co.itarchitects.xFlow.soap.server.define.userパッケージです。
WsUserInfomationManager
はユーザー情報の検索や更新を行うクラスです。
このクラスを使用して、WsOrganizationBean (所属する組織の情報)やWsMemberBean (ユーザー情報)等を取得します。
以下は、ユーザーのIDを指定して所属する組織の情報を取得する実装例です。
String memberID = "A10007";
WsUserInfomationManagerStub userInfomationManager = new WsUserInfomationManagerStub();
WsOrganizationBean[] organizationBeans = stub.doLookUpOrganizationVersion(memberID);
申請¶
申請は、処理を実行するクラスと、申請データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームでの申請に使用するのは、以下のクラスです。
- WsApplyAgent
- WsApplyData
- WsApplyOption (任意)
注釈
1~3はすべてjp.co.itarchitects.xFlow.soap.server.actionパッケージです。
WsApplyAgentは申請処理を実行するクラスです。
このクラスのexecuteメソッドに、申請データを渡して申請処理を実行します。
申請データは、WsApplyDataに対して設定します。
このクラスの各setterメソッドで、申請者のユーザー情報や申請内容など申請時に必須となるデータを設定します。
WsApplyOptionは、申請者コメントや添付ファイルなど、必須項目以外のデータを設定するためのクラスです。
WsApplyOptionの指定は必須ではありませんので、必要に応じてご利用ください。
以下は申請の実装例です。
//申請データの設定
WsApplyData applyData = new WsApplyData();
//申請者のID
applyData.setApplyerID("A10007");
//申請者が所属する組織の組織コード
applyData.setOrganizationVersionCode("OrgVer_20091027094625164");
//申請者が所属するグループのグループコード
applyData.setGroupCode("121000");
//申請者の役職コード
applyData.setAuthorityCode("105");
//申請フォームのキー
applyData.setDefineDataKey("BD20060512104350043_1000");
//申請件名
applyData.setApplySubject("APIによる申請");
//申請文書への入力データ
String[] documentData = new String[]{
"GOODS_NAME01" , "名刺"
, "REQ_NUM01" , "1"
, "NOTE" , "2週間後のイベントで必要です。"
};
applyData.setDocumentData(documentData);
//申請処理を実行
WsApplyAgentStub applyAgent = new WsApplyAgentStub();
applyAgent.execute(applyData, 1);
ヒント
WsApplyData#setOrganizationVersionCodeなどで指定する申請者の所属する組織情報(組織コードなど)の取得については「ユーザ情報の取得」を参照ください。
上記の実装例で申請データに設定している申請フォームのキーは、申請するフォームを特定するために使用されます。
このキーはjp.co.itarchitects.xFlow.soap.server.define.bdf パッケージのWsBdfManagerと、WsBdfBeanというクラスを使用して取得できます。
以下は申請フォームのキー取得の実装例です。
WsBdfManagerStub bdfManager= StubBuilder.buildWsBdfManagerStub();
WsBdfBean[] bdfBeans = bdfManager.doLookupBdf(
"OrgVer_20091027094625164" //申請者が所属する組織の組織コード
, "121000" //申請者が所属するグループのグループコード
, "105" //申請者の役職コード
, "A10007"); //申請者のID
WsBdfBean bdfBean = bdfBeans[0];
String key = bdfBean.getDefineDataKey(); //申請フォームのキー
承認¶
承認は、処理を実行するクラスと、承認データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームの承認に使用するのは、以下のクラスです。
- WsApproveAgent
- WsApproveData
- WsOption (任意)
注釈
1~3はすべてjp.co.itarchitects.xFlow.soap.server.actionパッケージです。
WsApproveAgentは承認処理を実行するクラスです。
このクラスのexecuteメソッドに、承認データなどを渡して承認処理を実行します。
承認データは、WsApproveDataに対して設定します。
このクラスの各setterメソッドで、承認者のIDや承認内容など承認時に必須となるデータを設定します。
WsOptionは、承認者コメントや添付ファイルなど、必須項目以外のデータを設定する場合に使用します。
WsOptionの指定は必須ではありませんので、必要に応じてご利用ください。
以下は承認の実装例です。
//承認データを設定
WsApproveData approveData = new WsApproveData();
//承認者のID
approveData.setApproverID("A10015");
//ワークフローの案件ID
approveData.setWorkflowID("A10007_20100127171539811");
//承認者を特定するための項番
approveData.setWorkflowMemberNodeNo("00001");
String[] documentData = new String[]{
"GOODS_NAME01" , "名刺"
, "REQ_NUM01" , "1"
, "NOTE" , "2週間後のイベントで必要です。"
};
//申請文書への入力データ
approveData.setDocumentData(documentData);
//承認処理を実行
WsApproveAgentStub approveAgent= new WsApproveAgentStub();
approveAgent.execute(approveData, 1);
ヒント
承認に必要なワークフロー案件のID、承認者を特定するための項番の取得は、「検索」を参照ください。
検索¶
申請・承認した案件情報や、案件に関わるユーザー情報の検索に使用する主なクラスは以下の通りです。
- WsWorkflowStatusManager
- WsWorkflowStatusBean
- WsWorkflowMemberStatusBean
注釈
1~3はすべてjp.co.itarchitects.xFlow.soap.server.statusパッケージです。
WsWorkflowStatusManagerは案件情報を検索するクラスです。
このクラスを使用してWsWorkflowStatusBean (案件情報)、WsWorkflowMemberStatusBean (案件に関わるユーザーの情報)等を検索します。
WsWorkflowStatusManagerでは案件情報の検索用に複数のメソッドが提供されています。代表的なメソッドは以下の通りです。
- doSelectActiveWorkflowStatusWithSearch未完了の申請案件を対象に検索します。
- doSelectRepositedWorkflowStatusWithSearch完了・否認済みの申請案件を対象に検索します。
- doSelectWorkflowStatusWithSearch完了・否認・未完了を問わず、すべての申請案件を対象として検索します。
上記のメソッドは、必要に応じて複数の検索条件を指定できます。
検索条件は、条件キーと条件値を連続して格納した文字列配列の形式で指定します。(検索条件を指定せずに実行すると全ての申請案件が対象となります。)
以下は、申請者のグループ名が「第一営業部」で、決裁日が「2013/09/01」から「2013/09/31」までの案件情報を検索する場合の実装例です。
//検索条件の作成 String groupName = "第一営業部"; //グループ名 String startDecideDate = "2013/09/01"; //決裁日(開始) String endDecideDate = "2013/09/31"; //決裁日(終了) String[] serachParam = new String[]{ "APPLYER_GROUP_NAME", groupName , "START_DECIDE_DATE", startDecideDate , "END_DECIDE_DATE" , endDecideDate }; //検索を実行 WsWorkflowStatusManagerStub statusManager = new WsWorkflowStatusManagerStub(); WsWorkflowStatusBean[] statusBeans = stub.doSelectRepositedWorkflowStatusWithSearch(serachParam);
また、案件に関わるユーザーの情報(WorkflowMemberStatusTable)を取得する場合はdoSelectWorkflowMemberStatusメソッドを使用します。
以下は、上記の実装例で検索した案件情報(WsWorkflowStatusBean)の案件IDを元に、その案件に関わるユーザーの情報を取得する実装例です。
WsWorkflowStatusBean status = statusBeans[0]; String workflowID = status.getWorkflowID(); WsWorkflowMemberStatusBean[] memberBeans = statusManager.doSelectWorkflowMemberStatus(workflowID);
ヒント
WsWorkflowMemberStatusBean#getWorkflowMemberNodeNoメソッドで申請者や承認者を一意に特定するための項番が取得できます。(項番はAPIでの承認などに使用します。)