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

    IMBox に投稿種別を追加する方法(Markdown)

    このCookBookでは、IMBoxに投稿種別を追加する方法について紹介しています。 以下のドキュメントを参照することで、IMBox に投稿種別を追加することができます。 IMBox プログラミングガ …

    AccelStudio 共通定数定義の活用方法

    このCookBookでは、共通定数の作成、利用方法、利用するメリットをご紹介します。 共通定数とは共通定数とはIM-BloomMakerやIM-LogicDesignerで共通で利用できる定数です。I …

    申請者の役職から処理対象者を設定する

    このCookbookでは、IM-Workflow 2018 Springから新たに追加された 処理対象者プラグイン「ロジックフロー(ユーザ)」 の設定方法を紹介いたします。 この機能を利用すると、申請 …

    no image

    IM-BloomMaker レイアウトの作り方(縦に並べる編)

    この CookBook では、コンテンツ種別が Bulma のレイアウトを縦に並べる方法を紹介します。また、レイアウトを横に並べる編もありますので、併せてご確認ください。https://dev.int …

    IM-LogicDesignerを利用して、IM-Workflowの到達処理で任意の参照者を追加する方法

    このCookBookでは、LogicDesignerを利用して、IM-Workflowの到達処理で任意の参照者を追加する方法について紹介しています。 承認ノードの到達処理で、申請者を参照者として登録し …