選択肢マスター管理プロセス,ウェブコンテンツ 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

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

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。