チームワークに必要なワークフロー。オンプレもOKなFileMakerで。

ポータルサイト(FileMaker簡易ワークフロー)Ver.2.1 を公開


カスタムApp + アドオン のセットである、ポータルサイト(FileMaker簡易ワークフロー)のセットを公開しました。

ひとりで github flow などしてみながら。


しかし、github クライアントの GitKraken って使い易くないですか? 



数字の根拠がすぐわかるシステムは良いシステム




帳票からデータ構造を考える。今回は「避難者の健康状況調査シート」。(岩手県「市町村避難所運営マニュアル作成モデル」より)

これは一見人数の記録に見えますが、恐らく該当者は誰だ?という話に必ずなる訳で…

数字の根拠が知りたくなる。となると避難者の名簿とリンクして、名簿から該当者を選択するUIがあればいいかな?

 


  1. 症状をクリック>人を追加>2名に変わる。
  2. カレンダーをクリック>6月28日を選択>全件表示をOFF>該当者が表示され、5歳未満1名が誰かがわかる。

症状がある人の数字だけでは、その人をフォローはできないので、数字に該当する人は誰かがわかるようにしました。 



そしてこれに例のアドオンを貼り付けると、受付ポータルシステムの一部として機能する。動画は、担当者が起票した調査シートを管理者がチェックして承認する流れ。こんな風に必要なデータベースを後から追加していく。チケット駆動型プロジェクト管理ツール的なメタ業務システム。 



敢えて帳票そっくりの画面にする



 これは、岩手県が公開している「市町村避難所運営マニュアル作成モデル」の中の、「様式17 避難所における要配慮者名簿 (PDF 52.6KB)」です。こちらのサイトで公開されています。


この帳票は「名簿」なのに「対応」欄があります。しかし対応を記録するのであれば、履歴がないと何かあったときの経緯がわからない。これはもう「名簿」という名の「対応」記録簿です。


今回は、敢えて帳票そっくりに画面を作りました。帳票が(県)指定の様式なので、結局は様式を作らなければならないし、帳票のレイアウトと画面のレイアウトが同じであれば、急場で集められた避難所のスタッフでも分かりやすいと考えたからです。

次の図はテーブル設計です。「事象」画面は、「日付・特定の人」の一部を表示する。
「特定の人」画面は、「人」の一部を表示する。というテーブル設計にしました。





 データ構造が似ている別のカスタムAppからほぼほぼコピーしてできました。カレンダーは標準のボタンバーでできています。(Webビューア+JavaScriptではありません。)

  1. カレンダーで日付を選択して、その日の対応を記録する。
  2. 対象者は、人マスターから要配慮者を選択して登録する。



これで最低限のカスタムAppができました。
この画面にポータルサイトとの連携を取るFileMakerアドオンを貼り付ければ、ワークフローシステムとの連携も簡単に実現します。



サービスが使えるグループを(値一覧のような)チェックボックスで選択する


 


最初は標準の値一覧で実装していましたが、双方向にリレーションを持ちたくなったため、テーブルに変換しました。画面はデバック中の動きです。編集用のポータルは見えないようにレイアウトの領域外に置いて隠したものを本番レイアウトとしました。

値一覧をテーブルにしたもう一つの理由は、選択した値のリストをキーにして、イメージデータをExecuteSQLで取ろうとしてだめだった(ExecuteSQLではFileMakerデータベースのオブジェクトフィールドを取得できない)こと。

しかし、テーブルへ値を追加したいときの実装が、FileMakerだととっても簡単。ポータルの最終フィールドに何か値を設定するだけでリレーションのキーが自動で設定されたレコードがCreateされます。この軽さがローコードの真骨頂。

実行権限のないボタンが押されたらヘルプメッセージを表示する



 

実行権限のボタンは非表示にしていましたが、権限がある人はどんな機能を使えるのかを敢えてガイドするようにしました。

しかし、このような仕様に限らず、スクリプト、カスタム関数、フィールド設定、スクリプトトリガー、条件付き書式などというように、あちこちに依存関係の強い実装をすると、メンテナンスに苦労します。

ということで、カスタム関数に処理機能だけでなく、使用者へのポップオーバーメッセージ用のテキストも持たせて、メンテナンスがしやすいように実装を工夫しています。

仕様を局所化する=あちこちに依存関係のある実装をしない。



ワークフローを動的に変化する値一覧で実現する




ログインユーザーによって、選択できる値一覧の値を限定できるようにしました。いわゆるワークフローです。 

これをマルチユーザーで実現するには、ユーザー別のスコープとなるグローバルフィールドを使用します。