Exmentの面白い機能 – 第2回「画面からの実行不可設定」

おはようございます。こんにちは。こんばんわ。
エヌ・ケイ・カスタマイズの 泉 です。

ちょっと前回から間が空いてしまいましたが、忘れていたわけではありません。
引き続きExmentの布教活動をやっていきたいと思います。

画面からの実行不可設定

私がExmentのシステムを構築する際に、この設定を考慮しないことはありません。

そう、皆さんご存知の

「画面からの実行不可設定」

です。

(参照)
・Exmentマニュアル「4.テーブル設定 – カスタムテーブル – 拡張設定 – 画面からの実行不可設定」

この機能を簡単に説明しますと

『画面』からデータの新規作成、編集、削除、インポート、エクスポートの実行可否を設定できる機能

です。
ちなみに、この『画面』というところがポイントになってきます。

私に刺さった機能の魅力 の前に

機能の魅力の前に、なぜ「画面からの実行不可設定」を常に考慮しているかを説明します。
そこには Claris FileMakerとExmentの連携 が影響しています。

Claris FileMakerとExmentの連携に限ったことではなく、複数のシステム間でデータ連携する場合、必ず注意しなければならないことに『データの完全性』があげられると思います。
特に、Claris FileMakerとExmentの連携のように、「非同期連携」がある場合は、特に気をつけなければいけません。

例えば以下のようなケースです。

(1) Exmentで Field A の値に X を登録
(2) Claris FileMakerがExmentの Field A の内容を取り込む
(3) Exmentで Field A の値を Y に更新
(4) Claris FileMakerで Field A の値を Z に更新し、Exmentに連携

このケースでは、(3)の時点で、ExmentとClaris FileMakerで Field A の内容に差異が生じており、(4)の時点で、Claris FileMakerの内容でExmentを更新することで、Exmentでの更新内容は破棄されています。

問題は、(4)の時点で、ExmentとClaris FileMakerの変更内容のどちらが正だったのかわからないまま、Claris FileMakerの内容で強制的に上書きしてしまっていることです。

解決策として、(4)のタイミングでClaris FileMaker側で、変更前の値を保持しておいて、変更前の値とExmentの現在の値を比較して、差異があれば、Claris FileMakerとExmentのどちらの値を採用するか、確認画面を出す。
などが考えられますが、処理やデータフローが複雑になります。

ですので、シンプルに設計するなら、Claris FileMakerとExmentで連携したタイミングで、どちらかのデータをロックし変更できなくします。

このデータをロックするのに便利なのが、「画面からの実行不可設定」です。

私に刺さった機能の魅力

「画面からの実行不可設定」という機能は、名称からして、『新規作成とか編集、削除ができなくなるんでしょ?』と私は思いました。

実際はそうなんですが、この機能には隠された『オプション効果』があります。

それは、

『画面(フォーム)からは実行できないけど、「データ更新設定」や「プラグイン」からは実行できるよ!!』

ということなんです。(拍手!!)

ピンとこない人がほとんどだと思いますので、例を示します。

例えば以下のような仕様の申請データを管理したいとします。

① 申請データはユーザが新規作成する。
② 申請データは削除不可。
③ 申請データは 起票→申請待ち→申請→承認待ち→承認/却下 という状態遷移を有する。
④ 申請データは [状態]:申請 以降、[状態]以外のフィールドのユーザによる編集不可。

上記の仕様をExmentだけで実現しようとすると、「ワークフロー」機能を使えば、簡単に実装できます。
ですが、[状態]の承認待ち、承認、却下をClaris FileMakerから更新しようとすると、同じようには行きません。

そこで活躍するのが「画面からの実行不可設定」です。
上記の仕様の場合、以下のような設定にします。

「画面からの実行不可設定」の設定例
[新規作成]のチェックを外すことで、上記①の仕様を満たします。

[削除]にチェックを入れることで、上記②の仕様を満たします。

問題は上記③と④の仕様を満たすことですが、まず、[編集]にチェックを入れることで、画面から編集できなくします。
これで、一覧画面、詳細画面から「編集」ボタンが消え、編集画面が表示できないなります。
それでは、どうやって[状態]フィールドを更新するのか?
ここで、「データ更新設定」で以下の設定を登録します。

ポイント①の設定をすることで、詳細画面にボタンを追加できます。
ポイント②の設定をすることで、[状態]を特定の値に更新することができます。
この設定によって、下図のように詳細画面に、特定のフィールドを更新するボタンが表示されます。

「画面からの実行不可設定」によって、『編集不可』となっておりますが、「データ更新設定」による機能は、その影響をうけません!!
編集不可だけど編集(更新)ができるわけです!!

このような『機能のコンボ』をうまくつかうと、Exmentの可能性がさらに広がります!!

おわりに

いかがだったでしょうか?

私の説明下手のせいで、上記説明は言葉足らずのところがあるかもしれません。
『もう少し詳しく説明が聞きたい』という方は、是非、弊社にお問い合わせください。

我ながら、第1回目に続き、マニアックな機能の説明をしてしまったと思っていますが、
相変わらず、まったくもって後悔しておりません!!

それくらい、自分には刺さった機能だったのです。

次回もマニアックな機能なのか、
はたまた正統派な機能なのか、
ぜひご期待ください!!

PS.月1Exmentブログ、タイムリミット7分前に完了したことは内緒です。。。