タイマーによる開始の時だけ、登録したリスト順に処理担当者を割り振る方法はありますでしょうか?

コメント

4件のコメント

  • Avatar
    RYU

    Tomo さん、プロセス連番を担当者の人数で割って、余りの数を利用して割り当てって感じでしょうか?


    プロセス連番を使えないなら、代わりに選択肢マスタ(アプリ搭載)を利用してはどうでしょう?


    選択肢マスタに数を持たせて、プロセス毎に加算更新して行く感じです。ただし、選択肢の値は文字列ですので、スクリプトで int に変換する必要がありますが。

    0
    コメントアクション パーマリンク
  • Avatar
    Tomo

    Ryu さん、ありがとうございます。

    プロセス連番を担当者の人数で割って、余りの数を利用して割り当てって感じでしょうか?

    そうです。まさにそのようにしておりました。

    選択肢マスターを使うとは、目から鱗です。下記のような感じでやってみて、選択肢マスタ―XMLからカウンターの値を読み込んで担当者を決め、カウンターの値を増やすことまではできたと思います。

    ただ、カウンター用の選択肢マスタ―XMLを更新するところがどうもわからず、ご存じでしたらお教えいただけないでしょうか?

    // 輪番用カウンターの値を、カウンター用選択肢マスタ―XMLから読み込む
    const counter_select = itemDao.findByValue("counter.xml", false, "cnt");
    let counter = parseInt(counter_select.getDisplay());

    // カウンターをメンバー数で割り、その余りを算出して選択肢IDとする
    const size_selection = itemDao.findAll("members.xml", false).size();
    const id_selected = counter % size_selection;

    // メンバーリストの中にある、上記IDを持つ選択肢のラベル(担当者のメールアドレス)を返す
    const assignee_selected = itemDao.findByValue("members.xml", false, id_selected.toString());
    const assignee_address = assignee_selected.getDisplay();

    // アドレスからユーザ型に変換して、データ項目「担当者(q_assignee)」に指定する
    const user_posting = quserDao.findByEmail(assignee_address);
    engine.setDataByVarName("q_assignee", user_posting);

    // カウンターの数を1増やす
    counter++;
    0
    コメントアクション パーマリンク
  • Avatar
    RYU

    Totmo さん

    ただ、カウンター用の選択肢マスタ―XMLを更新するところがどうもわからず、ご存じでしたらお教えいただけないでしょうか?

    選択肢マスタ―XML を更新するには、アイテムを利用するのが手っ取り早いですよ。

    選択肢マスタ更新https://support.questetra.com/ja/bpmn-icons/service-task-choices-update

    使い方が詳しく書かれてないので、簡単に説明しますね。

    1. ID 用とラベル用の2つの文字型(複数行)を用意する
    2. 選択型(タイプは何でもいい)を追加して「選択肢種別」で用意した文字型を指定する
    3. 「選択肢マスタ更新」の設定で、更新したい選択肢マスタと更新内容となる追加した選択型を指定する

    後は、文字型に更新する値を入れれば自動で選択肢マスタを更新してくれます。

    ID 用は、ID を変えないので初期値で「cnt」を入れておけばいいでしょう。
    ラベル用には「counter++」の値を入れるのですが、スクリプトでそのまま

    engine.setDataByVarName("q_master_update_label", counter);

    だとオブジェクトの型違いでエラーになるので

    engine.setDataByVarName("q_master_update_label", counter.toString());

    で文字列に変換しましょう。

    0
    コメントアクション パーマリンク
  • Avatar
    Tomo

    Ryu さん、

    ありがとうございます。教えていただいた方法でできました。助かりました!

    0
    コメントアクション パーマリンク

サインインしてコメントを残してください。