設計指針 計算式
最終更新日: 2020年4月1日
Wagby EEにおける計算式の取り扱いを図1に示します。「初期値」と「導出可能項目」は設計情報として記述できます。「トランザクション」は外部プログラムによって実現します。
データの新規登録時に、あらかじめ定まるものをいいます。例えば日付型項目の初期値に、"今日の日付" をセットするというものです。
他の項目の値から自動的に定まるものをいいます。例えば「売上 = 数量 x 単価」という式であれば、売上項目は数量項目と単価項目が入力された段階で定まります。
導出可能項目をデータベースに保存するか、しないかという判断もあります。Wagby EEの標準設定は「保存する」です。この場合、表示画面を開くときには再計算させず、データベースの値を使って表示します。「保存しない」とした場合は、常に再計算を行います。
Wagby EEでは式によって導出される項目は読み取り専用となります。すなわち式で計算されるが入力も行える、というような項目を定義することはできません。(このニーズに対しては二つの項目を用意するというテクニックが知られています。)
ある操作(データの登録や更新)に伴い、関連する別のモデルの値を同時に増減するような処理をいいます。例えば、売上伝票の新規登録のタイミングで、伝票に記載された商品の在庫数を減じるというような処理です。(通常、売上伝票モデルと商品在庫モデルは別々に用意されています。)
Wagby EEでは1つのモデルに閉じた四則演算式(初期値や導出項目)は、設計情報として記述できます。これは「構造」として扱います。モデルをまたがる式の場合のみ、外部プログラムとして実現します。この場合は構造ではなく「振る舞い」として扱います。
Wagby EEは一般的な四則演算式を利用できます。
さらに関数を利用することができます。
Wagby EEが提供するモデル参照関係では、参照先項目の「ID部」なのか「内容部」なのかを指定することができます。
また参照連動を使うことで、参照先モデルの値を自モデルに転記した状態で計算式を記述することができるため、さまざまな表現が可能です。
多くの関数は Excel と互換性のあるように設計されています。例えば生年月日から年齢を求める次の式は、Excel の DATEDIF 関数の例としても知られているものです。
Wagby EEはプログラムを記述しないため、「変数」という概念を持ちません。
しかし計算の途中で、ある値を一時的に維持し、他の項目の式でも参照したいという場合があります。そこで隠し項目を用意することがあります。
この隠し項目はデータベース非保存と設計することが多いです。計算の途中結果を保持する、変数のように扱うことができます。すなわち、この段階でモデルの構造が変更(項目が追加)されることは許容されます。
いくつかの業務アプリケーションでは、Wagby EEの枠組みで書くことが現実的でない、複雑な式を求められることがあります。例えば数十個の条件判断を伴うような式です。一般的にはプログラミング言語で対応するテーマですが、定型化された要件(例えばデシジョンテーブルを使う)として扱えるものもあります。このような場合は業務ロジックを BRMS (Business Rule Management System) で管理することができます。
このような処理パターンを多く発見した場合は、BRMS など別ツールの導入も検討するとよいでしょう。Wagby EEはすべての業務要件を満たすただ一つのツールではありません。むしろその設計思想は、Wagby EEで構築したアプリケーションをできるだけオープンにすることで、他ツールとの連携を用意にすることを意図しています。
もちろんBRMSの導入ではなく、データベースのストアドプロシジャで(業務要件を)実現したり、別のプログラムを呼び出すといった方法もあります。これらはすべて「カスタマイズ」という範疇で対応します。カスタマイズについては後述します。
これらの業務をどのタイミングで実現するのか、という点を現時点で整理します。
カスタマイズに着手する段階で、これらのテーマを扱います。
式を記述してビルドしたアプリケーションを関係者でレビューします。入力値によって式が動作すること、および、式の値が正しいことを検証します。
ここまでの設計を行うために求められるWagby EEのスキルは次のとおりです
この章で紹介した「トランザクション」の処理や、複雑な業務処理の実現は、Wagby EE設計の最終局面であるカスタマイズで対応することになりますので、しばらくお待ちください。この段階では、最終的にこういうカスタマイズが必要になる、という洗い出しまでとします。
次章から「振る舞い」について扱います。振る舞いで扱う最初のテーマは「画面遷移」です。
計算式によって定まる項目
初期値
導出可能項目
トランザクション
ワンポイント
式と関数
DATEDIF(${birth}, TODAY() ,"Y")
隠し項目
複雑な計算式の扱い
レビュー
この時点で求められるWagby EEのスキル
次のテーマ