CookBook

IM-BloomMaker 排他制御エレメントでロックを取得したユーザのみが編集できる画面の作成方法

投稿日:

このCookBookでは、「排他制御」エレメントを利用して、ロックを取得したユーザのみ編集できる画面を作成する方法について紹介します。

「排他制御」エレメントは 2021 Winter でリリースした共通エレメントです。IM-BloomMaker 排他制御エレメントの使い方 も合わせてご覧ください。

完成イメージ

このCookBookで紹介するサンプルのイメージです。
このサンプルではロックを取得したユーザのみ値の編集ができます。

完成サンプル

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

サンプルは intra-mart Accel Platform(Advanced)2022 Winter 以降のバージョンで動作を確認できます。

レシピ

「排他制御」エレメントを利用し、ロックを取得したユーザのみが編集できる画面を作成します。

  1. 変数の作成
  2. アクションの作成
  3. 「排他制御」エレメントの設定
  4. 任意のエレメントの配置
  5. 動作確認

変数の作成

真偽値の変数を2つ作成してください。

「lockedState」 変数は 「排他制御」エレメントで利用し、「uneditable」変数は編集の可否を設定したいエレメントで利用します。

アクションの作成

アクションを2つ作成します。

最初に、アクション「onLockedEvent」を作成します。
アクション名を「onLockedEvent」と指定してください。

アクションアイテム「変数○に○を代入する」を配置してください。

先頭のアクションアイテム「変数○に○を代入する」を次のように設定してください。

  • 代入先
    • $variable.uneditable
  • 代入元
    • $variable.lockedState

1つ目のアクションはこれで完成です。

続いて、2つ目のアクション「onUnlockedEvent」を作成します。
アクション名を「onUnlockedEvent」と指定してください。

アクションアイテム「変数○に○を代入する」を配置してください。
アクションアイテム「変数○に○を代入する」を次のように設定してください。

  • 代入先
    • $variable.uneditable
  • 代入元
    • $env.const.true

これで2つ目のアクションは完成です。

「排他制御」エレメントの設定 

「排他制御」エレメントを配置します。

配置した「排他制御」エレメントを選択し、プロパティタブを開いてください。

「application」プロパティ、「businessKeys」プロパティに値を指定してください。
今回は、「im_cookbook_214779」を指定します。

次に、ロック関係のプロパティを設定します。

  • 「useLock」プロパティが有効になっていること確認してください。
  • 「lockedState」プロパティに先程作成した「$variable.lockedState」変数を指定してください。
  • 「onLockedEvent」プロパティにアクション「onLockedEvent」を指定してください。
  • 「onUnlockedEvent」プロパティにアクション「onUnlockedEvent」を指定してください。

画像のようになっていることを確認してください。

任意のエレメントの配置

「排他制御」エレメントで制御したいエレメントを配置します。
サンプルでは画像のようにエレメントを配置しました。

各フォーム部品エレメントの「disabled」プロパティに「$variable.uneditable」を指定します。

以上でサンプルが完成しました。

動作確認

動作確認をします。

動作確認では、ブラウザを2画面使用します。
異なるブラウザを2つ、または「シークレットモード」とそうでない画面の2つを用意してください。

ブラウザからintra-martにアクセスし、それぞれ別のアカウントでログインしてください。
このCookBookでは、「aoyagi」と「ueda」アカウントでログインしています。

サンプルでは以下のURLでサンプルの実行画面を開くことができます。

http://localhost:8080/imart/im_cookbook/bloommaker/214779
※ http://localhost:8080/imart はお使いの環境によって異なる可能性があります。

-CookBook
-

執筆者:


comment

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

関連記事

no image

IM-BloomMaker ページのトップに戻るボタンの作り方

このCookBookでは、IM-BloomMaker でページのトップに戻るボタンの作り方について紹介しています。 今回紹介する方法は、intra-mart Accel Platform 2022 S …

no image

Web サーバで Cookie に SameSite=None; Secure 属性を追加する方法

ブラウザの仕様変更により、クロスドメインアクセスにおける Cookie の扱いに変更がありました。 Google Chrome では バージョン 80 以降、SameSite 属性が宣言されていない …

no image

IM-BloomMaker Modifier の使い方

このCookBookでは、2020 Summer から利用可能になった環境変数($env)に含まれる「modifier」について紹介しています。 modifier は、同じく 2020 Summer …

画面アイテム「グリッドテーブル」で全行クリアする方法

このCookBookでは、IM-BISの画面アイテムであるグリッドテーブルで、入力データを全行クリアする方法について紹介します。 「グリッドテーブル」は、jqGridを利用しており、入力されたデータを …

no image

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

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