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

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

    関連記事

    no image

    PostgreSQL の Docker を作成する。

    この CookBook では、PostgreSQL 検証用の Docker の作成手順について紹介しています。 レシピ ベースイメージの作成 PostgreSQL の Docker イメージを作成しま …

    no image

    FormaDesignerで作成したフォーム内でカーソル遷移を制御する方法

    このCookbookでは、FormaDesignerで作成したフォーム内でカーソル遷移を制御する方法を紹介します。 Tabキーを使ったカーソル遷移を考慮し、ユーザビリティが高いフォームを作成しましょう …

    no image

    IM-FormaDesignerで作成したフォーム内でIME入力モードを制御する方法【IE・EDGE】

    このCookbookでは、IM-FormaDesignerで作成したフォーム内の 画面アイテム「文字列」と画面アイテム「グリッドテーブル」のIME入力モードを制御する方法を紹介します。 入力モードを制 …

    IM-LogicDesignerを利用して、IM-Workflowの未処理案件の処理対象者を再展開する

    このCookBookでは、IM-LogicDesignerを利用して、IM-Workflowの未処理案件の処理対象者を再展開する方法について紹介しています。 人事異動を重ねることで、未処理案件の中には …

    no image

    imuiListTableで複数選択した行データを取得する方法

    このCookBookでは、imuiListTableで複数選択した行データを取得する方法を紹介します。 imuiListTableについての詳細はAPIドキュメントを参照してください。 [imuiLi …

    まだデータがありません。

    RSSRSSRSSRSS