物品貸出プロセス,貸出リスト閲覧

物品貸出プロセス,貸出リスト閲覧 20220812
物品貸出申請を受け付けるワークフローです。貸出申請時、検索ボタン押下で、指定した物品の貸出状況がリスト表示されます。貸出状況は、貸出中/予約中の申請から期間・利用者が取得され、記載されます。(物品貸出プロセス,QRコード利用 https://support.questetra.com/ja/templates/items-lending-management-by-qrcode-20220711/ をベースに作成されています)
作業担当者 (スイムレーンの数:3)
  • 申請者
  • 総務部 物品貸出担当
  • 上長
仕事の流れ (ワークフロー図の複雑度:23)
  • 11.貸出申請
    • 社員は、物品の貸出を申請します。
  • 41x.再申請
    • 社員は、物品の貸出を却下理由を元に再申請します。却下理由に依っては、申請を取下げます。
  • 22.承認
    • 申請者の上長は、貸出申請を承認します。
  • 83.貸出受付
    • 総務部 貸出担当は、QRコードから申請内容を確認し、物品貸出日時を登録します。
  • 124.返却受付
    • 総務部 貸出担当は、QRコードから申請内容を確認し、物品返却日時を登録します。
  • 5x1.件名セット
    • ワークフロー基盤は、件名をセットします。
  • 6x2.受付証QRコード発行
    • ワークフロー基盤は、貸出・返却受付用の QR コード(PNG画像)を生成します。
  • 18x3.件名セット
    • ワークフロー基盤は、件名をセットします。
  • 22督促日時 更新
    • ワークフロー基盤は、督促日時を2時間後に更新します。
  • 23貸出Status キャンセル
    • ワークフロー基盤は、貸出ステータスを”キャンセル”に変更します。
  • 21貸出Status 予約済
    • ワークフロー基盤は、貸出ステータスを”予約済”に変更します。
  • 19貸出Status 貸出中
    • ワークフロー基盤は、貸出ステータスを”貸出中”に変更します。
  • 20貸出Status 返却済
    • ワークフロー基盤は、貸出ステータスを”返却済”に変更します。
ワークフロー図 (クリックして開く)
受け渡しされるビジネスプロセス変数 (データ項目の数:19)
  • ◆申請 10
  • 貸出物品カテゴリq_item_category4*
    • 貸出物品のカテゴリが格納されます。
  • 貸出物品q_item5*
    • 貸出物品が格納されます。
  • ◆貸出物品状況の確認17
    • 指定された貸出物品の貸出/予約状況を検索し、動的に表示します。
  • 貸出予定日時q_lending_schedule_datetime0*
    • 申請時、貸出予定日時が格納されます。
  • 返却予定日時q_return_schedule_datetime1*
    • 申請時、返却予定日時が格納されます。
  • 貸出目的q_description6
    • 申請時、物品の貸出理由が格納されます。
  • ◆貸出/返却 11
  • 貸出管理番号q_management_number15
    • 貸出案件毎にユニークな管理番号が格納されます。
    • L#{#sformat(‘%06d’, processInstanceId)}
  • 物品利用者q_quser7
    • 貸出申請者が格納されます。
    • ${processInstance.initQuserId}
  • 物品利用承認者q_leader8
    • 貸出申請の承認者が格納されます。
    • ${processInstance.initQuserId}
  • 貸出完了日時q_lending_datetime2*
    • 物品を貸出した日時が格納されます。
  • 返却完了日時q_return_datetime3*
    • 物品を返却された日時が格納されます。
  • 貸出時:メモq_lending_note12
    • 貸出時の注意事項(物品の取扱・状態等)が格納されます。
  • 返却時:メモq_return_note13
    • 返却時の物品の状態等が格納されます。
  • 通信欄q_communication9
    • 申請時の注意事項、承認時のコメント等が格納されます。
  • QRコード画像ファイルq_QRCode_file16
    • 本案件のプロセス詳細 URL を示すQRコードの画像ファイルが格納されます。
  • 貸出ステータスq_status14
    • 物品の貸出ステータスが格納されます。
    • applying
  • 督促日時q_remind_datetime19
    • 返却督促日時が格納されます。

フィールド名, Num, 初期値

Download

This archive contains the BPMN icon, which is only available in the Professional edition.

Notes

  • インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
  • “申請者”スイムレーンの割当ユーザの権限
    • アプリ設定 > アプリ詳細 > 権限の編集 ”データ閲覧権限”を付与してください。
  • 予約キャンセルの運用
    • 貸出申請後、貸出不要となった場合、総務担当者に”予約キャンセル”の操作を依頼してください。

Arrangement Tips

「1.貸出申請」工程 貸出状況検索 デコレーション Script (click to open)
<button onclick="user_getHistory()" type="button" class="user_Search">貸出中/予約中 確認</button>
<br>貸出中/予約中の場合は、利用者と相談の上、申請してください。
<div style="padding: 0.5em 1em; margin: 2em 0; font-weight: bold; color: #6091d3; background: #FFFFF; border: solid 3px #6091d3;  border-radius: 10px; width:80%;">
<div id="user_Result"></div>
</div>

<script type="text/javascript">
document.addEventListener("click", function (e) {
  console.log( " DocumentElement clicked: " + e.target.textContent );
  if (e.target.classList.contains("user_Appender")) {
    qbpms.form.set( "q_Transaction_Title", e.target.value );   ///EDIT///
  }
});

function user_getHistory() {
  let numTARGET_ITEM_ID          = 5;     ///No Need Editing///
  let numTARGET_STATUS_ID        = 14;    ///No Need Editing///
  let numTARGET_STARTDATETIME_ID = 0;     ///No Need Editing///
  let numTARGET_ENDDATETIME_ID    = 1;    ///No Need Editing///
  let numLIMITSIZE     = 10;              ///Need Editing (According to frequency of use)///
  let numWORKFLOWAPPID = ***;            ///Need Editing(This WorkFlow Application ID)///
  let strSearchItemId = "";
  let strSearchItemName = "";
  let array = qbpms.form.get( "q_item" );
  let elResultDiv     = document.querySelector("#user_Result");    ///EDIT///
  console.log("array: " + array.length);
  if (array.length !== 0){
    console.log( "q_item is not empty or null.");
    strSearchItemName = array[0].display;
    strSearchItemId = array[0].value;
  }else{
    elResultDiv.innerHTML = ""; // clear
    return;
  }

  let objCriteria = {}; // JSON criteria: (BPMS v13.3~)
      // https://questetra.zendesk.com/hc/ja/articles/4415341995289
      // https://questetra.zendesk.com/hc/en-us/articles/4415341995289
      objCriteria.processModelInfoId = numWORKFLOWAPPID;
      objCriteria.processInstanceState = [];
      objCriteria.processInstanceState[0] = "STARTED";
      objCriteria.data = [];
      objCriteria.data[0] = {};
      objCriteria.data[0].type   = "select";
      objCriteria.data[0].number = numTARGET_ITEM_ID;
      objCriteria.data[0].method = "selected";
      objCriteria.data[0].value  = strSearchItemId;
      objCriteria.fields = [];
      objCriteria.fields[0] = {};
      objCriteria.fields[0].type   = "select";
      objCriteria.fields[0].number = numTARGET_ITEM_ID;
      objCriteria.fields[1] = {};
      objCriteria.fields[1].type   = "datetime";
      objCriteria.fields[1].number = numTARGET_STARTDATETIME_ID;
      objCriteria.fields[2] = {};
      objCriteria.fields[2].type   = "datetime";
      objCriteria.fields[2].number = numTARGET_ENDDATETIME_ID;
      objCriteria.fields[3] = {};
      objCriteria.fields[3].type   = "select";
      objCriteria.fields[3].number = numTARGET_STATUS_ID;
  let xhr = new XMLHttpRequest();
      xhr.open( "GET", "/API/OR/ProcessInstance/list?limit=" + numLIMITSIZE +
                       "&criteria=" + encodeURIComponent(JSON.stringify(objCriteria)) );
      xhr.responseType = 'json';
      xhr.send();
      xhr.onload = function() {
        if (xhr.status != 200) {
          console.error(`Error ${xhr.status}: ${xhr.statusText}`); // e.g. "404: Not Found"
        } else { // show the result
          let objResponse = xhr.response;
          if (objResponse.count === 0){
            elResultDiv.innerHTML = "いつでも貸出可能"; // clear
            return;
          }
          console.log( " Decoration XHR: Found PastData " + objResponse.processInstances.length +
                       "/" + objResponse.count  );
          elResultDiv.innerHTML = ""; // clear
          let list = Array.from(new Array(objResponse.processInstances.length), () => new Array(6).fill(""));
          for (let i=0; i < objResponse.processInstances.length; i++){
            console.log("STATUS:" + objResponse.processInstances[i].data[numTARGET_STATUS_ID].value[0].value);
            list[i][1] = "【" + objResponse.processInstances[i].data[numTARGET_STATUS_ID].value[0].display +"】" + " ";
            list[i][2] = "/OR/ProcessInstance/view?processInstanceId=" + objResponse.processInstances[i].processInstanceId;
            list[i][3] = "_blank";
            if (objResponse.processInstances[i].data[numTARGET_STARTDATETIME_ID].value !== null){
              list[i][0] = objResponse.processInstances[i].data[numTARGET_STARTDATETIME_ID].value;
              list[i][4] = objResponse.processInstances[i].data[numTARGET_STARTDATETIME_ID].value + " - ";
            }else{
              list[i][4] = "未定 - ";
            }
            if (objResponse.processInstances[i].data[numTARGET_ENDDATETIME_ID].value !== null){
              list[i][5] = objResponse.processInstances[i].data[numTARGET_ENDDATETIME_ID].value + " ";
            }else{
              list[i][5] = "未定 ";
            }
            list[i][6] = objResponse.processInstances[i].processInstanceInitQuserName;
          }
          console.log(JSON.stringify(list));
          createHtml(list,elResultDiv);
        }
        console.log( " Decoration XHR: finished " );
      };
      xhr.onerror = function() {
        alert("Request failed");
      };
  function createHtml(list,elResultDiv){
    list.sort(function(a, b){
	return (a > b ? 1 : -1);
    });
    console.log("sorted: " + JSON.stringify(list));
    for (let i=0; i < list.length; i++){
console.log(list[i][1]);
      let elNewAnchor = document.createElement("a");
          elNewAnchor.href = list[i][2];
          elNewAnchor.target = list[i][3];
          elNewAnchor.innerText += list[i][4];
          elNewAnchor.innerText += list[i][5];
          elNewAnchor.innerText += list[i][6];
      elResultDiv.append( list[i][1], elNewAnchor );
      elResultDiv.innerHTML += "<br>";
    }
  }
}
</script>

Capture

See also

コメントを残す

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

上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む