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

    IM-Workflowの色々なコンテンツ画面へ遷移するURL

    このCookbookでは、IM-Workflowの色々なコンテンツ画面へ遷移するURLをご紹介いたします。 独自で作成した画面やViewCreator、BloomMakerなど、IM-Workflow …

    no image

    IM-BloomMaker Bulma のタブを使用したページ切り替え処理の作り方

    このCookBookでは、Bulma のタブコンポーネントを使用したページ切り替え処理について紹介します。 完成イメージ 初期表示時 「Page2」タブ選択時 完成サンプル 以下の完成サンプルをダウン …

    no image

    Payara 管理画面で行った設定を CUI で実施する方法

    この CookBook では、Payara の Asadmin Recorder 機能について紹介しています。 Asadmin Recorder 機能についての詳細を知りたい方は Asadmin Re …

    no image

    ライブラリのバージョン監視に応用可能なロジックフローの作り方

    このCookBookでは、IM-LogicDesignerを利用して、指定したURLのHTMLから正規表現を利用して任意の文字列を取得する方法を紹介します。 JavaScript定義とREST定義を作 …

    no image

    Resin の Docker を作成する。

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