IM-BIS for Accel Platform システム管理者 操作ガイド 第25版 2023-04-01

6.2. 動的処理対象者設定 外部連携(JAVA)サンプル

6.2.1. 動的処理対象者設定 外部連携(JAVA)サンプルについて

動的処理対象者設定では、動的に処理対象者を設定するノード(動的承認、縦配置、横配置)に対し、処理対象者設定条件を設定することができます。
動的処理対象者設定で外部連携設定を利用した場合は、処理対象者を自動で設定したり、手動で選択できる処理対象者の範囲を限定したりすることができます。
このサンプルでは、外部連携設定で選択可能なデータソース種別のうち、JAVAでの設定方法を使用します。
「承認者の初期設定サンプル」は、処理対象者を自動で設定する方法を使用します。
「承認者の絞込条件設定サンプル」は、手動で選択できる処理対象者の範囲を限定する方法を使用します。
  • 承認者の初期設定サンプル
    ノード編集画面に初期値を設定します。
    ../../_images/dynamic_processing_1.png
  • 承認者の絞込条件設定サンプル
    絞込み条件確認画面に値を設定します。
    ノード編集画面で検索ボタンをクリック後のユーザ検索画面に暗黙条件として適用されます。
    ../../_images/dynamic_processing_2.png
    ../../_images/dynamic_processing_3.png

コラム

処理対象者、動的ノードについては、「 IM-Workflow 仕様書 」を参照してください。

コラム

動的ノード(動的承認、縦配置、横配置)の処理対象者条件の設定については、「 IM-BIS 業務管理者操作ガイド 」 - 「 動的ノード(動的承認、縦配置、横配置)の処理対象者条件を設定する 」を参照してください。

コラム

動的処理対象者設定については、「 IM-BIS 業務管理者操作ガイド 」 - 「 動的処理対象者設定 」または、「 IM-BIS 仕様書 」 - 「 動的処理対象者設定に関する仕様 」を参照してください。

コラム

外部連携については、「 IM-BIS 業務管理者操作ガイド 」 - 「 外部連携を設定する 」または、「 IM-BIS 仕様書 」 - 「 外部連携に関係する仕様 」を参照してください。

6.2.2. 動的処理対象者設定 外部連携(JAVA)サンプルのダウンロード

サンプルは、以下のリンクより入手できます。

6.2.3. 動的処理対象者設定 外部連携(JAVA)サンプルのインポート

ダウンロードしたファイルは、下記手順にてインポートすることができます。
  1. IM-Jugglingを起動し、Jugglingプロジェクト内にあるjuggling.imを IM-Juggling Editorで開きます。

  2. 「ユーザモジュール」タブを選択し、右上にある「+」のアイコンをクリックします。

  3. ダウンロードした「 bis_sample_dynamic-1.0.0.imm 」ファイルを選択します。

  4. Jugglingプロジェクトからwarファイルを作成します。サンプルを含めるにチェックを入れます。

    コラム

    warファイルの作成については、「 intra-mart Accel Platform セットアップガイド 」 - 「 WARファイルの作成 」を参照してください。
  5. 作成したWARファイルを、 Web Application Server ( Resin ) 上にデプロイ(展開)します。

    注意

    「BIS管理者」ロールを付与したユーザで、インポートを実施してください。

    注意

    IM-Workflow 定義については、zipファイルを解凍してから、インポートしてください。
  6. ダウンロードしたファイルをインポートします。 インポート方法は、「 IM-BIS 業務管理者操作ガイド 」 - 「 インポート・エクスポートを行う 」を参照してください。

これで、必要な設定作業はすべて完了しましたので、実際にフローで申請・承認を行ってみましょう。

コラム

このサンプルでは、「BIS担当者」ロールを付与したユーザで、申請を行います。

コラム

申請については、「 IM-BIS ユーザ 操作ガイド 」 - 「 BPMの処理を開始する/ワークフローの申請を行う 」を参照してください。

6.2.4. 動的処理対象者設定 外部連携(JAVA)サンプルのコード

このサンプルの外部連携(JAVA)は、以下のように実装しています。
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
package jp.co.intra_mart.system.bis.soa.func;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class DynamicPersonJavaSample {

    public DynamicPersonJavaSample() {
    }

//初期設定
    public Map<String,Map<String,List<Map<String,String>>>> getDynamicPerson(Map<String,Object> param) {

        System.out.println("\n\n---start DynamicPersonJavaSample#getDynamicPerson----");
        for (Entry<String, Object> entry : param.entrySet() ) {
            System.out.println("key[" + entry.getKey()+"] value["+entry.getValue() +"]");
        }
        System.out.println("\n\n---start DynamicPersonJavaSample#getDynamicPerson----");
        List<Map<String,String>> dynamicSettingList = new ArrayList<Map<String,String>>();

        // ユーザ
        Map<String,String> detail = new HashMap<String,String>();
        detail.put("code", "1");
        detail.put("processSetNo", "1");
        detail.put("userCd", "aoyagi");
        dynamicSettingList.add(detail);

        // 組織
        detail = new HashMap<String,String>();
        detail.put("code", "2");
        detail.put("processSetNo", "1");
        detail.put("companyCd", "comp_sample_01");
        detail.put("departmentSetCd", "comp_sample_01");
        detail.put("departmentCd", "dept_sample_11");
        detail.put("compare", "eq");
        dynamicSettingList.add(detail);

        // パブリックグループ
        detail = new HashMap<String,String>();
        detail.put("code", "3");
        detail.put("processSetNo", "1");
        detail.put("publicGroupSetCd", "sample_public");
        detail.put("publicGroupCd", "public_team_a");
        detail.put("compare", "eq");
        dynamicSettingList.add(detail);

        // 役職
        detail = new HashMap<String,String>();
        detail.put("code", "4");
        detail.put("processSetNo", "1");
        detail.put("companyCd", "comp_sample_01");
        detail.put("departmentSetCd", "comp_sample_01");
        detail.put("postCd", "ps002");
        detail.put("compare", "eq");
        dynamicSettingList.add(detail);
        
        Map<String,List<Map<String,String>>> returnObject = new HashMap<String,List<Map<String,String>>>();
        returnObject.put("settings", dynamicSettingList);

        Map<String,Map<String,List<Map<String,String>>>> returnMap = new HashMap<String,Map<String,List<Map<String,String>>>>();
        returnMap.put("ResponseObject", returnObject);
        System.out.println("---End DynamicPersonJavaSample#getDynamicPerson----\n\n\n");
        return returnMap;
    }
    
//絞込条件設定
    public Map<String,Map<String,List<Map<String,String>>>> getDynamicPersonDepartment(Map<String,Object> param) {

        System.out.println("\n\n---start DynamicPersonJavaSample#getDynamicPersonDepartment----");
        for (Entry<String, Object> entry : param.entrySet() ) {
            System.out.println("key[" + entry.getKey()+"] value["+entry.getValue() +"]");
        }
        System.out.println("\n\n---start DynamicPersonJavaSample#getDynamicPersonDepartment----");
        List<Map<String,String>> dynamicSettingList = new ArrayList<Map<String,String>>();

        Map<String,String> detail = new HashMap<String,String>();
        
        // 組織+役職(上位階層検索)
        detail.put("code", "6");
        detail.put("processSetNo", "1");
        detail.put("companyCd", "comp_sample_01");
        detail.put("departmentSetCd", "comp_sample_01");
        detail.put("departmentCd", "dept_sample_11");
        detail.put("compare", "ge");
        detail.put("postCd", "ps003");
        dynamicSettingList.add(detail);
        
        Map<String,List<Map<String,String>>> returnObject = new HashMap<String,List<Map<String,String>>>();
        returnObject.put("settings", dynamicSettingList);

        Map<String,Map<String,List<Map<String,String>>>> returnMap = new HashMap<String,Map<String,List<Map<String,String>>>>();
        returnMap.put("ResponseObject", returnObject);
        System.out.println("---End DynamicPersonJavaSample#getDynamicPersonDepartment----\n\n\n");
        return returnMap;
    }
    
}