タイマーによる開始の時だけ、登録したリスト順に処理担当者を割り振る方法はありますでしょうか?
タイマー開始イベントと、選択肢マスタ、プロセス連番を用いて、選択肢マスタに記載したリスト順に定期的な業務の担当者を割り振る業務アプリを運用しております。(例えば、最初の週はAさん、次の週はBさん、その次の週はCさん…といった感じです。)
このアプリを定期的な業務以外でも活用できるよう手動の開始イベントを追加したところ、手動での開始ごとにプロセス連番がカウントされるので、選択肢マスタに記載の順番で担当者が割り当てられなくなってしまいました。
手動での開始に影響されず、タイマーによる開始時にはリスト順に処理担当者を割り振る方法はないでしょうか?
-
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++; -
Totmo さん
ただ、カウンター用の選択肢マスタ―XMLを更新するところがどうもわからず、ご存じでしたらお教えいただけないでしょうか?
選択肢マスタ―XML を更新するには、アイテムを利用するのが手っ取り早いですよ。
「選択肢マスタ更新」https://support.questetra.com/ja/bpmn-icons/service-task-choices-update
使い方が詳しく書かれてないので、簡単に説明しますね。
- ID 用とラベル用の2つの文字型(複数行)を用意する
- 選択型(タイプは何でもいい)を追加して「選択肢種別」で用意した文字型を指定する
- 「選択肢マスタ更新」の設定で、更新したい選択肢マスタと更新内容となる追加した選択型を指定する
後は、文字型に更新する値を入れれば自動で選択肢マスタを更新してくれます。
ID 用は、ID を変えないので初期値で「cnt」を入れておけばいいでしょう。
ラベル用には「counter++」の値を入れるのですが、スクリプトでそのままengine.setDataByVarName("q_master_update_label", counter);
だとオブジェクトの型違いでエラーになるので
engine.setDataByVarName("q_master_update_label", counter.toString());
で文字列に変換しましょう。
サインインしてコメントを残してください。
コメント
4件のコメント