CookBook

結合処理で「多数決」承認機能を実現する

投稿日:

このCookBookでは、「多数決」承認機能を実現する方法について紹介しています。

完成イメージ

以下の完成サンプルをダウンロードしてご活用ください。

  • im_logicdesigner-data-149668
  • IM-LogicDesignerのインポート機能を利用してインポートしてください。
    「IM-LogicDesigner ユーザ操作ガイド」-「インポートを行う」

  • im_workflow-data-149668
  • zipファイルを任意のフォルダに展開し、IM-Workflowのインポート機能を利用してインポートしてください。
    「IM-Workflow 管理者操作ガイド」-「インポート/エクスポートを行う」

  • sample_program-data-149668
  • zipファイルを任意のフォルダに展開し、アプリケーションサーバの「コンテキストパス/WEB-INF/jssp/src」配下に配置してください。
     



    ・上の承認ノードから、'Yes'→'No'→'Yes'→'Yes'を選択。
    ⇒'Yes'ノード数が過半数となり、案件が終了。

    レシピ【承認ノード数が5個の場合】

    ※このレシピでは、'Yes'・'No'を選択する画面のノード数が5個のフローを作成します。サンプルでは、過半数を判定する母数として5を固定で設定するため、お客様の要件に応じて設定を変更してください。

    1. テーブルを作成してください。
    2. ロジックフローを作成してください。
    3. ワークフローを作成してください。
    4. 画面で選択した'Yes'・'No'をテーブルに登録する処理を作成してください。
       

    1. テーブルを作成してください。

    下記のコードを参考にしてテーブルを作成してください。

     

    2. ロジックフローを作成してください。

    最初に「定数設定」から定数を追加してください。

    ロジックフロー定義/定数設定

    定数ID 定数値
    APPROVAL_NUMBER 5
    FALSE false

    入力値・出力値
    入力値・出力値に関しては、下記を参照してください。
    「管理者操作ガイド」-「分岐開始・終了処理」
     

    集計する処理を"ロジックフロー定義編集/ユーザ定義追加/SQL定義新規作成"から追加してください。
    ➀:ユーザ定義/SQL定義編集
    ➁:ユーザ定義/JavaScript定義編集
    この2つを作成します。
    ➂:終了タスクのマッピング設定もしていきます。


     

    ➀にロジックフローがテーブルから案件単位で情報を取得する処理を作成してください。

    ➀の処理
    ユーザ定義共通設定
    《入力値》
    'string型':systemMatterld

    ・JSON入力

    《返却値》
    'object[]型':records
    ↳'string型':system_matter_id
    ↳'string型':select_yesno

    《SQL定義(クエリ)》

     

    マッピング設定
    入力:imwProcessCommon/systemMatterld -- 出力:systemMatterld

     

    ➁の処理は、以下の3つの処理を書き込みます。

    routeTransitionFlagに渡る値
    1、'Yes'数が50%以上になる ture
    2、'No'数が50%以上になる ture
    3、'Yes'・'No'数がどちらとも50%以下になる false

    ※「数が50%以上」=分岐終了に接続されているノード数を分母に、'Yes'ノード・'No'ノード数それぞれを分子にとった上での比率のこと。つまり「数が50%以上」だと、過半数とれているということになる。

    ➁の処理
    ユーザ定義共通設定
    《入力値》
    'object[]型':records
    ↳'string型':system_matter_id
    ↳'string型':select_yesno

    'integer型':approvalNumber

    ・JSON入力

    《返却値》
    'boolean型':routeTransitionFlag

    ・JSON入力

    《スクリプト》

     

    マッピング設定
    入力:定数/APPROVAL_NUMBER -- 出力:approvalNumber
    入力:im_cookbook_149668_user_majority_rule1/records -- 出力:records

     

    ➂で、終了タスクのマッピング設定をしてください。

    ➂の処理
    マッピング設定
    入力:定数/FALSE -- 出力:error
    入力:im_cookbook_149668_user1/routeTransitionFlag
    -- 出力:routeTransitionFlag

    作成したロジックフローを、ワークフローで利用できるようにしてください。
    「管理者操作ガイド」-「ロジックフローを利用する」

    3. ワークフローを作成してください。

    ユーザプログラム定義・ルート定義・フロー定義を新規作成してください。

    設定時のポイント
    ・ユーザプログラム定義
    ユーザプログラム定義編集/プラグイン種別 → 結合処理
    ユーザプログラム定義編集/プラグイン種類 → 【結合処理】LogicDesigner
    実行順番 → 1
    ・フロー定義
    バージョン/ルート詳細/分岐開始ノード編集 → 分岐開始方法:設定しない
    バージョン/ルート詳細/分岐終了ノード編集 → 分岐終了方法:ユーザプログラムで分岐終了する

    結合処理
    結合処理については、下記を参照してください。
    「管理者操作ガイド」-「コンテンツ定義を登録する」
     

    4. 画面で選択した'Yes'・'No'をテーブルに登録する処理を作成してください。

    画面に、対象ユーザが選択して多数決をとる'Yes'・'No'ボタンを作成してください。
    すでに製品メディアに保存されているサンプルプログラムを使用していきます。

    《承認画面》
    承認画面のhtmlファイルに、'Yes'・'No'ボタンを書き込んでください。
    (今回はラジオボタンを作成しています)

     

    《(承認ノードに設定する)アクション処理》
    次に、ユーザプログラム「アクション処理」にYes・Noを含む情報を渡してください。
    以下のコードを、承認ページのhtmlファイルに追加してください。

    sample\im_workflow\purchase\screen\approve.html

     

    sample\im_workflow\purchase\screen\approve.html

     

    最後は承認アクションのjsファイルに、データベースへ結果を入れる処理を入れてください。
    以下のコードを書き込みます。

    sample\im_workflow\purchase\action\ActionProcess.js

    -CookBook
    -,

    執筆者:


    comment

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    関連記事

    IM-BloomMaker 数値入力(フォーマット)の独自のプロパティの紹介

    2022 Winter にリリースした「数値入力(フォーマット)」エレメントは、数値ボックスを表示するエレメントです。3桁区切りや0埋めのフォーマットを利用できます。この CookBook では、「数 …

    no image

    Payara の Docker を作成する。

    この CookBook では、Payara の Docker の作成手順について紹介しています。 レシピ ベースイメージの作成 Payara の Docker イメージを作成します 実行します 1. …

    no image

    imuiValidateでhiddenの隠し要素をバリデーションする方法

    このCookBookでは、imuiValidateでhiddenの隠し要素をバリデーションする方法について紹介しています。 今回は閉じられたimuiGadgetBar 内の入力項目に対して、クライアン …

    no image

    IM-BloomMaker Bulma Theme Colored について

    この CookBook では intra-mart Accel Platform 2021 Summer から利用可能になった コンテンツ種別「Bulma Theme Colored」について紹介しま …

    no image

    ワークスペースとToDo機能との連携

    このCookBookでは、「intra-mart Accel Collaboration」の機能の1つであるワークスペースと「intra-mart Accel Collaboration」のToDo機 …