使用例

ここでは、Java APIの主な使用例をプログラムの実装例と共に説明します。
実装例で使用しているクラスの詳細は、 Java API仕様書 を参照ください。
(実装例では、説明を簡潔にするため例外処理が省略されています。)

ユーザー情報の取得

ユーザー情報の取得で使用する主なクラスは以下の通りです。

  1. UserInfomationManager
  2. OrganizationTable
  3. 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);

申請

申請は、処理を実行するクラスと、申請データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームでの申請に使用するのは、以下のクラスです。

  1. ApplyAgent
  2. ApplyDataBuilder4XML
  3. 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();  //申請フォームのキー

承認

承認は、処理を実行するクラスと、承認データを保持するクラスを組み合わせて使用します。
フォーム形式が”フォーム”のフォームの承認に使用するのは、以下のクラスです。

  1. ApproveAgent
  2. ApproveDataBuilder4XML
  3. 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、承認者を特定するための項番の取得は、「検索」 を参照ください。

申請・承認処理の拡張

通常の申請・承認処理を拡張するための抽象クラスが提供されています。主なクラスは以下の通りです。

  1. FinalProcessAfterApply
申請処理を拡張する場合に使用します。
  1. FinalProcessAfterApprove
承認処理を拡張する場合に使用します。
  1. FinalProcessAfterSanction
決裁処理を拡張する場合に使用します。

注釈

1~3はすべてjp.co.itarchitects.xFlow.actionパッケージです。

抽象クラスを継承した後処理プログラムを開発することで、例えば申請時の入力内容を外部システムに登録するといった拡張を行えます。
抽象クラスは、申請、承認など処理毎に提供されています。拡張する処理に合わせて継承するクラスを選択してください。

後処理プログラムによる拡張に必要な手順を以下に示します。

  1. 各抽象クラスを継承した後処理プログラム用のクラスを作成します。
  2. 作成したクラスのdoFinalProcessメソッドで拡張内容に合わせたプログラムを実装します。

各抽象クラスではdoFinalProcessメソッドがabstractで定義されており、このメソッドが各処理のタイミングでワークフローシステムによって実行されます。doFinalProcessメソッドは引数に処理を実行したユーザーの情報を格納したWorkflowMemberStatusTableを受け取ります。申請時の後処理プログラムであれば申請者の情報が格納されています。

作成したプログラムは、以下の手順でワークフローシステムに登録してください。

  1. 管理権限を持ったユーザでワークフローシステムにログインします。
  2. [管理] - [システム設定]をクリックします。
  3. サイドバーから[オプション]をクリックします。
  4. [APIオプション]タブ - [後処理プログラム]に、後処理プログラムごとの設定項目に、作成したクラスの完全修飾名を入力します。
  5. [保存]ボタンをクリックします。
  6. ワークフローシステムを再起動します。

以下は申請時の抽象クラス(FinalProcessAfterApply)の実装例です。

public class FinalProcessAfterApply extends FinalProcessAfterApply {
  public void doFinalProcess(
    WorkflowMemberStatusTable workflowMemberStatusTable) {

    System.out.println("Applied");
  }
}

サンプルプログラム

[API/sample/java_sample]に「使用例」で説明したAPIのサンプルプログラムが付属しています。

  1. ユーザー情報の取得
jp/co/itarchitects/javasample/UserSample.java
  1. 申請
jp/co/itarchitects/javasample/ApplySample.java
  1. 承認
jp/co/itarchitects/javasample/ApproveSample.java
  1. 検索
jp/co/itarchitects/javasample/SearchSample.java
  1. 申請・承認処理の拡張
jp/co/itarchitects/javasample/FinalProcessAfterApplySample.java