
選択肢マスター管理プロセス,ウェブコンテンツ 20211117
コンテンツ情報が選択肢マスターに追加・変更・削除されるワークフローです。 情報の構成は、URL/作成者/公開日時等です。入力された情報を元にマスターが自動更新されます。 マスターは、ページ更新/アクセス集計業務等で業務データとして利用されます。
作業担当者 (スイムレーンの数:3)
- 自動処理 コンテンツ選択肢マスター更新
- 作業者は基本、存在しません。手動で開始する場合は、選択肢マスター管理者を想定しています。
- コンテンツ制作者
- 制作したコンテンツ情報を選択肢マスターへ反映を依頼する人物です。
- コンテンツ選択肢マスター管理者
- コンテンツ選択肢マスターのメンテナンス担当者
仕事の流れ (ワークフロー図の複雑度:37)
- 24 1.削除:マスター更新依頼
- コンテンツ制作者がマスタ更新依頼(コンテンツ削除)を行います。
- 23 1.変更:マスター更新依頼
- コンテンツ制作者がマスタ更新依頼(コンテンツ更新)を行います。
- 10 1.手動:マスター更新
- コンテンツマスタ管理者が、マスター更新を開始します。(依頼を受け付ける日付範囲指定)
- 1 1.追加:マスター更新依頼
- コンテンツ制作者がマスタ更新依頼(コンテンツ追加)を行います。
- 7 1x.[再]マスター更新登録
- コンテンツ制作者が、管理者のチェックバックで依頼内容を修正します。
- 3 2.更新内容チェック
- コンテンツ選択肢マスター管理者が、マスター更新依頼内容を確認します。
- 43 Hook 情報生成
- ワークフロー基盤が、hook すべきマスター更新完了待ち(Web Hook)データを生成します。
- 44 コンテンツ選択肢マスター更新
- ワークフロー基盤が、コンテンツマスタを更新します。(洗い替え)
- 31 ステータス更新
- ワークフロー基盤が、ステータス(更新完了)を更新します。
- 32 バックアップ:コンテンツマスタ
- ワークフロー基盤は、現在のコンテンツマスター(選択肢XML)をバックアップします。
- 29 マスター更新依頼日
- ワークフロー基盤が、マスタ更新依頼日/Web hook API キー/プロセスIDをセットします。
- 4 マスター更新待ち
- ワークフロー基盤が、マスタ更新完了通知を Web Hook 待ち受けします。
- 27 マスター更新種別:削除
- ワークフロー基盤が、マスタ更新種別(削除)/件名/プロセス種別をセットします。
- 26 マスター更新種別:変更
- ワークフロー基盤が、マスタ更新種別(更新)/件名/プロセス種別をセットします。
- 22 マスター更新種別:追加
- ワークフロー基盤が、マスタ更新種別(追加)/件名/プロセス種別をセットします。
- 12 件名セット
- ワークフロー基盤が、件名/プロセス種別をセットします。
- 30 件名セット
- ワークフロー基盤が、件名/プロセス種別をセットします。
- 34 削除レコードセット
- ワークフロー基盤が、削除指定マスターデータの各項目をセットします。
- 41 更新レコード作成
- ワークフロー基盤が、マスタ更新すべき依頼を絞り込みます。
- 33 更新依頼リスト 取得
- ワークフロー基盤が、対象期間分のコンテンツマスタ管理プロセスデータを取得します。
ワークフロー図 (クリックして開く)
受け渡しされるビジネスプロセス変数 (データ項目の数:28)
- ◆コンテンツ選択肢マスター更新依頼
5 - ◆追加用ガイド
25 - ◆更新用ガイド(スクリプト付)
27 - ◆削除用ガイド
26 - マスター更新種別 q_kind_of_updating_master
0- マスター更新依頼の種別が格納されます。(自動格納)
- ◆スペーサー1/2
6 - コンテンツ選択肢マスター q_contents_master
9*- 更新・削除依頼時に対象となるコンテンツマスターのレコードが格納されます。
- URL q_contents_url
1- マスター更新依頼の”URL”項目が格納されます。
- タイトル q_contens_title
4- マスター更新依頼の”ページタイトル”項目が格納されます。
- 制作者名 q_contents_creator_name
7- マスター更新依頼の”制作者名”項目が格納されます。
- 公開日 q_contents_publish_date
3- マスター更新依頼の”公開日”項目が格納されます。
- processInstanceStartDatetime
- APIキー q_api_key
2- マスター更新完了待受 Web Hook で利用される API キーが格納されます。
- プロセスID q_processInstanceId
19- マスター更新完了待受 Web Hook で利用されるプロセスIDが格納されます。
- 更新ステータス q_status
10- マスター更新依頼の更新状況が格納されます。
- yet
- マスター更新依頼日 q_request_date
8- マスター更新依頼日が格納されます。
- processInstanceStartDatetime
- ◆コンテンツ選択肢マスタ一括更新
13 - マスター更新日 q_execution_date
16- コンテンツ選択肢マスターが更新される日が格納されます。
- processInstanceStartDatetime
- コンテンツ選択肢マスター バックアップファイル q_contents_master_backup_file
11- コンテンツ選択肢マスター更新前に現在のマスターのバックアップを格納します。
- 選択肢マスター更新依頼データ q_extract_processInstance_records
12- コンテンツマスター更新すべき依頼リストが格納されます。
- Kind CRUD URL Title Author PulishDate Key RequestDate ProcessId Status
- 抽出行数 q_getting_rows_count
17- コンテンツマスター更新すべき依頼リストの行数が格納されます。
- 処理中行No. q_executing_row_number
18- 1
- ◆システム情報
14 - プロセス種別 q_process_kind
15- 開始されたプロセスの種別(依頼もしくは更新実行)が格納されます。
- ◆スペーサー1/2
28 - 更新用IDs q_ids_for_update_master
21- コンテンツマスター更新用の ID 群が格納されます。
- 更新用Labels q_labels_for_update_master
22- コンテンツマスター更新用のラベル群が格納されます。
- 更新用コンテンツ選択肢マスター q_contents_master_for_update
23- コンテンツマスター更新用のマスターデータ(選択肢XMLデータ項目)が格納されます。
- hook receive message q_hook_receive_message
24- Web Hook 受付時にアクセス元からのメッセージを格納します。(アクセス元のプロセスID情報)
フィールド名, Num, 初期値
Download
- optional-XML-management-for-contents-20211117-ja.qar
- optional-XML-management-for-contents-20211117-ja.csv (データ項目定義インポート用)
This archive contains the BPMN icon, which is only available in the Professional edition.
Notes
- インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
- ワークフローアプリは、大きく2つの開始点に分かれています。
- コンテンツ選択肢マスター更新依頼(追加・変更・削除)の開始点
- コンテンツ選択肢マスター更新処理
- 「更新レコード作成」自動工程 処理内容
- 依頼データの整理
- 前日の本ワークフローアプリの実行データが「選択肢マスター更新依頼データ」に格納されています。
- 「選択肢マスター更新依頼データ」内容を解析し、「依頼データリスト」に書き換えます。
- 「2.更新内容チェック」工程で確認済の依頼のみ抽出されます。(一括更新処理や未確認依頼は排除されます)
- 依頼データに基づき、選択肢マスター更新準備
- 現在の選択肢マスターデータに、依頼内容(追加・変更・削除)を反映します。
- 選択肢マスター構成に必要な、ID,Label 情報がデータ項目「更新用IDs」「更新用Labels」に格納されます。
- 依頼データの整理
「更新レコード作成」自動工程 スクリプト (click to open)
const processInstanceDatas = engine.findDataByVarName("q_extract_processInstance_records").replace(/\n$/,"");
const rows = processInstanceDatas.split("\n");
const itemLists = itemDao.findAll("test-m1549.xml", true);
const itemIdLists = new Array();
const itemLabelLists = new Array();
main();
function main(){
let updateCount = 0;
let executionList = "";
let cols;
// cols[0]: Kind("request" or "execution"), [1]: CRUD("追加","変更","削除"),[2]: URL,
// [3]: Title,[4]: Author,[5]: Publish Date, [6]: Request Process API Key,
// [7]:Request Date ,[8]: Process Id, [9]: Request Process Status
// check update count
for (var i=0; i < rows.length; i++){
cols = rows[i].split("\t");
if ((cols[0] === "request")&&(cols[6] !== "")&&(cols[9] === "更新中")){
updateCount++;
executionList += rows[i] + "\n";
}
}
engine.setDataByVarName("q_getting_rows_count", new java.math.BigDecimal(Number(updateCount)));
engine.setDataByVarName("q_extract_processInstance_records", executionList.replace(/\n$/,""));
// master add
for (var i=0; i < rows.length; i++){
cols = rows[i].split("\t");
if ((cols[1] === "追加")&&(cols[6] !== "")&&(cols[9] === "更新中")){
itemIdLists.push(cols[2]);
itemLabelLists.push("[" + cols[2] + "],[" + cols[3] + "],[" + cols[4] + "],[" + cols[5] + "]");
}
}
// master update or delete
let execKind;
let updateLabel = "";
for (var i=0; i < itemLists.size(); i++){
execKind = "stay";
for (var j=1; j < rows.length; j++){
cols = rows[j].split("\t");
if ((cols[2] === itemLists.get(i).getValue())&&(cols[1] === "変更")&&(cols[9] === "更新中")){
execKind = "update";
updateLabel = "[" + cols[2] + "],[" + cols[3] + "],[" + cols[4] + "],[" + cols[5] + "]";
break;
}
if ((cols[2] === itemLists.get(i).getValue())&&(cols[1] === "削除")&&(cols[9] === "更新中")){
execKind = "delete";
break;
}
}
if (execKind === "update"){
itemIdLists.push(itemLists.get(i).getValue());
itemLabelLists.push(updateLabel);
}else{
if (execKind === "stay"){
itemIdLists.push(itemLists.get(i).getValue());
itemLabelLists.push(itemLists.get(i).getDisplay());
}
}
}
let ids = "";
let labels = "";
for (var i=0; i < itemIdLists.length; i++){
ids += itemIdLists[i] + "\n";
labels += itemLabelLists[i] + "\n";
}
engine.setDataByVarName("q_ids_for_update_master",ids.replace(/\n$/,""));
engine.setDataByVarName("q_labels_for_update_master",labels.replace(/\n$/,""));
}Arrangement Tips
- 「1.変更:マスター更新依頼」工程で入力補助を実現しています。
- コンテンツ制作者(依頼者)は、変更対象のコンテンツをデータ項目「コンテンツ選択肢マスター」から選択します。
- 選択されたコンテンツ情報が、「URL」「タイトル」「制作者」「公開日」の各データ項目に自動セットされます。
「1.変更:マスター更新依頼」工程 入力補助スクリプト (click to open)
更新したいコンテンツを指定し、変更を記載ください。
<script type="text/javascript">
qbpms.form.on('ready',function(){
qbpms.form.on('change','q_contents_master',function(){
let contents = qbpms.form.get("q_contents_master");
if (contents.length === 0){
qbpms.form.set("q_contents_url", "");
qbpms.form.set("q_contens_title", "");
qbpms.form.set("q_contents_creator_name", "");
jQuery('input[name="data[3].input"]').val("");
}
let items = contents[0].display.split("],[");
qbpms.form.set("q_contents_url", items[0].replace(/^\[/,""));
qbpms.form.set("q_contens_title", items[1]);
qbpms.form.set("q_contents_creator_name", items[2]);
jQuery('input[name="data[3].input"]').val(items[3].replace(/\]$/,""));
});
});
</script>Capture






