CookBook

BloomMakerとLogicDesignerでWorkflowコンテンツを作成する

投稿日:2019-12-02 更新日:

このCookBookでは、BloomMakerとLogicDesignerを利用してWorkflowのコンテンツを作成する方法を紹介します。
2019 Winter(8.0.24)で、以下の機能をリリースしました。

IM-BloomMakerのアクションに、IM-Workflowと連携するアクションを追加します。

上記の機能を利用して、Workflowの処理画面をBloomMakerで作成します。
2019 Winter(8.0.24)時点では、Worklfowの申請/承認等、各処理を実施するアクションのみとなります。

2020 Winter(8.0.27)より、一覧表示パターンで「コピー新規」アイコンが利用できるようになりました。
それに伴い、LogicDesignerフロー定義:GetPurchaseData にコピー新規用ロジックを追加しています。

また、コピー新規用ロジックで使用する「参照権限判定」は2022 Spring(8.0.31)より追加された新たな判定範囲を利用しています。

完成イメージ


テナント環境セットアップのサンプルインポートで登録される、スクリプト開発/JavaEE開発で作成されたサンプル相当のフローをBloomMakerとLogicDesignerで作成しています。

完成サンプル

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

IM-BloomMakerインポートファイル : im_bloommaker-im_cookbook_171126
IM-BloomMaker のインポート画面からインポートしてください。
なお、インポート後にはIM-BloomMaker ルーティング定義の認可設定が必要ですのでご注意ください。

IM-LogicDesignerインポートファイル : im_logicdesigner-data
IM-LogicDesigner のインポート画面からインポートしてください。

IM-Workflowインポートファイル : im_workflow-im_cookbook_171126
IM-Workflowのインポート画面からインポートしてください。

サンプルに含まれる定義情報は以下の表の通りです。

種類 定義名 補足説明
BloomMakerコンテンツ im_cookbook_171126 メインとなるWorkflowの処理画面
BloomMakerルーティング定義 im_cookbook_route_171126 上記BloomMakerコンテンツに対するルーティング定義
LogicDesignerフロー定義 ActionProcessPurchaseData Workflowアクション処理で利用。ユーザデータの登録/更新する。
LogicDesignerフロー定義 ActvMatterDeleteListenerPurchaseData Workflow未完了案件削除処理で利用。ユーザデータの削除する。
LogicDesignerフロー定義 CplMatterDeleteListenerPurchaseData Workflow完了案件削除処理で利用。ユーザデータの削除する。
LogicDesignerフロー定義 GetPurchaseData BloomMaker前処理で利用。ユーザデータを取得する。
LogicDesignerフロー定義 GetUserName BloomMaker前処理で利用。userCdからユーザ名を取得する。
LogicDesignerユーザ定義 DeletePurchaseData LogicDesignerフロー定義で利用する
LogicDesignerユーザ定義 GetMatterNumber LogicDesignerフロー定義するスクリプト
LogicDesignerユーザ定義 GetPurchaseData LogicDesignerフロー定義するSQL
LogicDesignerユーザ定義 InsertPurchaseData LogicDesignerフロー定義するSQL
LogicDesignerユーザ定義 UpdatePurchaseData LogicDesignerフロー定義するSQL
LogicDesignerユーザ定義 validatePurchaseData LogicDesignerフロー定義するスクリプト
Workflowコンテンツ定義 im_cookbook_171126 BloomMakerコンテンツ、LogicDesignerフロー定義を設定
Workflowルート定義 im_cookbook_171126
Workflowフロー定義 im_cookbook_171126

サンプルは以下の環境で動作を確認できます。

  • intra-mart Accel Platform(Advanced) 2019 Winter(8.0.24)以降のバージョンであること
  • テナント環境セットアップで、サンプルデータがインポート済みであること

レシピ

  1. BloomMakerでコンテンツを作成する
  2. BloomMakerでルーティングを作成する
  3. Workflowのコンテンツ定義を設定する

設定項目の詳細は、添付のサンプルを参照してください。

1. BloomMakerでコンテンツを作成する

サンプルでは、Workflowの各画面種別をBloomMakerのページで分けて作成しています。
各画面が大きく変わらない場合、項目をコピーしてページを作成するのが簡単なためお勧めします。
ノード毎に大幅に画面や表示データが変わる場合は、別コンテンツとして作成することを推奨します。

BloomMakerでコンテンツを作成する上でのポイントは以下となります。

1.1 申請一覧・案件一覧からのPOSTパラメータを受け取る設定をする
1.2 BloomMaker前処理からのパラメータを受け取る設定をする
1.3 初期表示時のアクションを設定する
1.4 各ページのボタンにアクションを設定する

1.1 申請一覧・案件一覧からのPOSTパラメータを受け取る設定をする

BloomMaker では、画面遷移時に設定されたリクエストパラメータを受け取ることができます。
リクエストパラメータを受け取るためには、変数の入力を設定します。

Workflowの申請一覧/案件一覧画面から遷移した場合に受け取れるパラメータについては、こちらを参照してください。

1.2 BloomMaker前処理からのパラメータを受け取る設定をする

BloomMaker では、ルーティング定義で設定した前処理からパラメータを受け取ることができます。
今回のサンプルでは、画面に表示するユーザデータは、前処理で取得します。
前処理については後述の説明を参照してください。

1.3 初期表示時のアクションを設定する

BloomMaker では、コンテンツの読み込み時に、アクションを動作することができます。
サンプルでは「初期処理」アクションとして以下を実行しています。

  • 後述のWorkflowのアクションで利用するパラメータの設定
  • 申請一覧・案件一覧から受け取ったパラメータ(imwPageType)から表示するページの判定

作成した「初期処理」アクションをContainerのEventに設定します。

Containerのプロパティが見つからなかった場合、こちらを参照してください。

1.4 各ページのボタンにアクションを設定する

各ページのボタン押下でWorkflowの処理が実行できるように設定します。
ここでは例として、申請ボタンの設定について説明します。

申請ボタン押下時に動作する「申請する」アクションを作成します。
このアクションでは以下の処理を実行します。

  • 入力チェック処理を「Execute custom script」アクションで作成
  • Workflow申請処理を「Apply matter」アクションで作成

「Apply matter」アクションの設定方法の詳細については、こちらを参照してください。

  • Workflow申請処理に対するエラーハンドリングを作成

アクションエディタの右ペインの「エラーが発生したとき」タブをクリックし、エラーが発生したときの処理を作成します。

Workflowのアクション処理でエラーを返した場合、エラーコードが9001となります。
Workflowのアクション処理のエラーは、開発者が任意で設定できるため、ここでは画面上にメッセージボックスとしてエラーを表示するように設定しています。
それ以外のエラーについては、処理を継続できないため、エラー画面に遷移しています。

  • 「申請する」アクションを申請ボタンに設定

記載内容以外の、設定項目の詳細は、添付のサンプルを参照してください。

2. BloomMakerでルーティングを作成する

Workflow コンテンツを作成する場合、メソッドの設定をPOSTで作成してください。
Workflow の各種一覧画面からユーザコンテンツ画面に遷移時は、必要な情報をPOSTしています。
そのため、POST以外で作成した場合、 各種一覧画面からユーザコンテンツ画面には遷移できません。

サンプルでは、前処理で以下を実行しています。

  • jp.co.intra_mart.system.workflow.bloommaker.preprocessor.WorkflowAuthChecker
    Workflowの画面表示権限判定処理です。詳細についてはこちらを参照してください。
  • GetPurchaseData
    画面に表示するユーザデータの取得処理です。
  • GetUserName
    画面に表示する処理権限者の表示名の取得処理です。
    本サンプルでは、処理権限者は申請一覧・案件一覧から受け取ったパラメータを利用して設定しています。
    パラメータではuserCdのみのため、ユーザ名を取得します。

3. Workflowのコンテンツ定義を設定する

Workflowのコンテンツ定義を設定します。BloomMakerのコンテンツを表示する場合、画面定義のパス種別をURLで設定してください。

-CookBook
-, ,

執筆者:


  1. 田島 桂子 より:

    サンプルをダウンロードし、
    手順書通りにインポートし、プレビュー画面で「申請する」ボタンを押下すると
    エラーとなり、更新対象のTBLがなかったのでTBLを作成し再度
    「申請する」ボタンを押下すると「フローIDが未指定です」とのエラーとなります。
    どのような設定をしたら、上記のエラーが解消されるのでしょうか?

    • dh@intra-mart.jp より:

      更新対象のTBLがなかったのでTBLを作成

      こちら、「テナント環境セットアップで、サンプルデータがインポート済みであること」が前提としておりますので、サンプルデータをインポート頂くとそのまま実行できます。

      「申請する」ボタンを押下すると「フローIDが未指定です」とのエラーとなります。

      こちらは、IM-Workflowの一覧画面からアクセスしていますでしょうか。
      製品同梱のサンプルと同様に、一覧画面から遷移すること前提で画面を作成しております。
      IM-Workflowの一覧画面以外から遷移する場合、
      「Apply matter」アクションの入力値の必須項目を設定する必要があります。

      参考:
      https://www.intra-mart.jp/document/library/iap/public/im_workflow/im_workflow_specification/texts/appendix/bloommaker/action/ModalApply.html#id8

      • 田島 桂子 より:

        サンプルデータがインポートされていませんでしたので
        サンプルデータをインポート後、申請時にエラーとならず申請することができました。

comment

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

関連記事

no image

テナント環境セットアップでテナント固有の属性を登録する。

この CookBook では以下の方法を紹介します。 テナント環境セットアップでテナント固有の属性を登録する方法。 システム管理者のテナント管理画面で、テナント固有の属性を編集する方法。 今回は「外部 …

IM-BloomMaker 時刻入力に設定した日付・時刻型変数の日付やタイムゾーンはどうなっているの?

はじめに 2022 Winter でリリースした「時刻入力」エレメントは、時刻の入力フォームを表示するエレメントです。 「時刻入力」エレメントの value プロパティには日付・時刻型変数を指定します …

no image

物理マシン 1 台で Resin のクラスタリング環境を構築する

この CookBook では、物理マシン 1 台で Resin のクラスタリング環境を構築する手順について紹介しています。 Resin のクラスタリングを構築するには通常複数台のマシンが必要ですが、D …

スプレッドシートでSpreadJSライブラリを利用してFormaの画面に対して入力チェックを実行する方法

このCookBookでは、スプレッドシートでSpreadJSライブラリを利用して入力チェックを実行する方法について紹介しています。 SpreadJSライブラリはクライアントサイドで動作するため、サーバ …

IM-BloomMaker で作成した画面で、入力項目の値によってエレメントの表示・非表示を切り替える方法

このCookBookでは、IM-BloomMakerで入力系エレメントの入力値によってエレメントの表示/非表示を切り替える方法について紹介しています。 実際にサンプル画面を作成しながら解説を行います。 …