Hitachi

uCosminexus Service Coordinator Interactive Workflow AP開発ガイド


2.6.2 Javaオブジェクトの実装例(条件,生成ルール,および振り分けルール)

条件定義,生成ルール定義,および振り分けルール定義の実装について説明します。条件またはルールの評価に渡される情報については,「2.6.4(1) Javaオブジェクトに渡される情報(条件,生成ルールおよび振り分けルールの場合)」を参照してください。

〈この項の構成〉

(1) 条件評価

条件評価の実装例を示します。

条件Javaオブジェクトのインタフェースについては,「9.2 CIWConditionEvaluator(条件Javaオブジェクトのインタフェース)」を参照してください。

public class UserCondition implements CIWConditionEvaluator {
 
    /**
     * 条件評価メソッドの実装
     */
    public boolean evaluateCondition(
        Map<Parameter, String> aParameters,
        Connection aDBConnection)
        throws CIWUserException {
 
        // ---------------------------------------------------
        // (1)情報の取得
        // ---------------------------------------------------
 
        String bpDefName = null; // ビジネスプロセス定義名
        String piName = null; // 案件名
        String piID = null; // 案件ID
        String exParameter = null; // 補助定数パラメタ
        String userId = null; // ユーザID
 
        bpDefName = aParameters.get(Parameter.CSCIW_PDEFNAME);
        piName = aParameters.get(Parameter.CSCIW_PINAME);
        piID = aParameters.get(Parameter.CSCIW_PIID);
        exParameter = aParameters.get(Parameter.CSCIW_EXPARAMETER);
        userId = aParameters.get(Parameter.CSCIW_USERID);
 
        // ---------------------------------------------------
        // (2)条件評価処理
        // ---------------------------------------------------
 
        boolean result = false;
        // データベースにアクセスする場合は,コネクション(aDBConnection)を利用する。
        // ただし,コネクションを切断したりトランザクションを終了したりしないこと。
        result = true; // 評価結果を格納
 
        // ---------------------------------------------------
        // (3)評価結果を戻り値に設定
        // ---------------------------------------------------
 
        return result;
    }
}

(2) 生成ルール評価

生成ルール評価の実装例を示します。

生成ルールJavaオブジェクトのインタフェースについては,「9.3 CIWCreationRuleEvaluator(生成ルールJavaオブジェクトのインタフェース)」を参照してください。

public class UserCreationRule implements CIWCreationRuleEvaluator {
 
    /**
     * 子作業生成ルール評価メソッドの実装
     */
    public Set<String> evaluateCreationRule(
        Map<Parameter, String> aParameters,
        Connection aDBConnection)
        throws CIWUserException {
 
        // ---------------------------------------------------
        // (1)情報の取得
        // ---------------------------------------------------
 
        String bpDefName = null; // ビジネスプロセス定義名
        String piName = null; // 案件名
        String piID = null; // 案件ID
        String exParameter = null; // 補助定数パラメタ
        String userId = null; // ユーザID
 
        bpDefName = aParameters.get(Parameter.CSCIW_PDEFNAME);
        piName = aParameters.get(Parameter.CSCIW_PINAME);
        piID = aParameters.get(Parameter.CSCIW_PIID);
        exParameter = aParameters.get(Parameter.CSCIW_EXPARAMETER);
        userId = aParameters.get(Parameter.CSCIW_USERID);
 
        // ---------------------------------------------------
        // (2)子作業名の決定処理
        // ---------------------------------------------------
 
        Set<String> childWorks = new HashSet<String>();
        // データベースにアクセスする場合は,コネクション(aDBConnection)を利用する。
        // ただし,コネクションを切断したりトランザクションを終了したりしないこと。
        childWorks.add("SubWork01"); // 子作業名の文字列を格納
        childWorks.add("SubWork02"); // 子作業名の文字列を格納
 
        // ---------------------------------------------------
        // (3)作業名を戻り値に設定
        // ---------------------------------------------------
 
        return childWorks;
    }
}

(3) 振り分けルール評価

振り分けルール評価の実装例を次に示します。

振り分けルールJavaオブジェクトのインタフェースについては,「9.4 CIWResourceSelector(振り分けルールJavaオブジェクトのインタフェース)」を参照してください。

public class UserResourceSelector implements CIWResourceSelector {
 
    /**
     * 振り分けルール評価メソッドの実装
     */
    public String getAvailableParticipant(
        Map<Parameter, String> aParameters,
        Connection aDBConnection)
        throws CIWUserException {
 
        // ---------------------------------------------------
        // (1)情報の取得
        // ---------------------------------------------------
 
        String bpDefName = null; // ビジネスプロセス定義名
        String piName = null; // 案件名
        String piID = null; // 案件ID
        String exParameter = null; // 補助定数パラメタ
        String userId = null; // ユーザID
 
        bpDefName = aParameters.get(Parameter.CSCIW_PDEFNAME);
        piName = aParameters.get(Parameter.CSCIW_PINAME);
        piID = aParameters.get(Parameter.CSCIW_PIID);
        exParameter = aParameters.get(Parameter.CSCIW_EXPARAMETER);
        userId = aParameters.get(Parameter.CSCIW_USERID);
 
        // ---------------------------------------------------
        // (2)作業者の決定処理
        // ---------------------------------------------------
 
        String workerName = null;
        // データベースにアクセスする場合は,コネクション(aDBConnection)を利用する。
        // ただし,コネクションを切断したりトランザクションを終了したりしないこと。
        workerName = "User01"; // 作業者のIDを文字列に格納する。
 
        // ---------------------------------------------------
        // (3)作業者を戻り値に設定
        // ---------------------------------------------------
 
        return workerName;
    }
}