引き続き構造の設計を行います。Wagbyが提供する式と関数で定義できるかを検討していきます。

Wagbyにおける計算式の取り扱いを図1に示します。「初期値」と「導出可能項目」は設計情報として記述できます。「トランザクション」は外部プログラムによって実現します。

図1 計算式の適用

初期値

データの新規登録時に、あらかじめ定まるものをいいます。例えば日付型項目の初期値に、"今日の日付" をセットするというものです。

導出可能項目

他の項目の値から自動的に定まるものをいいます。例えば「売上 = 数量 x 単価」という式であれば、売上項目は数量項目と単価項目が入力された段階で定まります。

導出可能項目をデータベースに保存するか、しないかという判断もあります。Wagbyの標準設定は「保存する」です。この場合、表示画面を開くときには再計算させず、データベースの値を使って表示します。「保存しない」とした場合は、常に再計算を行います。

Wagbyでは式によって導出される項目は読み取り専用となります。すなわち式で計算されるが入力も行える、というような項目を定義することはできません。(このニーズに対しては二つの項目を用意するというテクニックが知られています。)

トランザクション

ある操作(データの登録や更新)に伴い、関連する別のモデルの値を同時に増減するような処理をいいます。例えば、売上伝票の新規登録のタイミングで、伝票に記載された商品の在庫数を減じるというような処理です。(通常、売上伝票モデルと商品在庫モデルは別々に用意されています。)

Wagbyでは1つのモデルに閉じた四則演算式(初期値や導出項目)は、設計情報として記述できます。これは「構造」として扱います。モデルをまたがる式の場合のみ、外部プログラムとして実現します。この場合は構造ではなく「振る舞い」として扱います。

Wagbyは一般的な四則演算式に加え、関数を利用することができます。

図2 四則演算と関数

特に、Wagbyが提供するモデル参照関係では、参照先項目の「ID部」なのか「内容部」なのかを指定することができます。
また参照連動を使うことで、参照先モデルの値を自モデルに転記した状態で計算式を記述することができるため、さまざまな表現が可能です。

多くの関数は Excel と互換性のあるように設計されています。例えば生年月日から年齢を求める次の式は、Excel の DATEDIF 関数の例としても知られているものです。

DATEDIF(${birth}, TODAY() ,"Y")

Wagbyはプログラムを記述しないため、「変数」という概念を持ちません。

式や関数を記述することはできますが、それらは1行で表現するものであり、式中に変数を用意することはできません。

しかし計算の途中で、ある値を一時的に維持し、他の項目の式でも参照したいという場合があります。そこで隠し項目を用意することがあります。

この隠し項目はデータベース非保存と設計することが多いです。計算の途中結果を保持する、変数のように扱うことができます。すなわち、この段階でモデルの構造が変更(項目が追加)されることは許容されます。

いくつかの業務アプリケーションでは、Wagbyの枠組みで書くことが現実的でない、複雑な式を求められることがあります。例えば数十個の条件判断を伴うような式です。一般的にはプログラミング言語で対応するテーマですが、定型化された要件(例えばデシジョンテーブルを使う)として扱えるものもあります。このような場合は業務ロジックを BRMS (Business Rule Management System) で管理することができます。

このような処理パターンを多く発見した場合は、BRMS など別ツールの導入も検討するとよいでしょう。Wagbyはすべての業務要件を満たすただ一つのツールではありません。むしろその設計思想は、Wagbyで構築したアプリケーションをできるだけオープンにすることで、他ツールとの連携を用意にすることを意図しています。

もちろんBRMSの導入ではなく、データベースのストアドプロシジャで(業務要件を)実現したり、別のプログラムを呼び出すといった方法もあります。これらはすべて「カスタマイズ」という範疇で対応します。カスタマイズについては後述します。

これらの業務をどのタイミングで実現するのか、という点を現時点で整理します。

  • 登録・更新のタイミングで同時に処理される。
  • 登録・更新画面を開いている間で、ボタンを押すと、その結果が項目に反映される。
  • 登録・更新画面を開いている間で、ある項目に値を入力すると(処理が実行され)その結果が別の項目に反映される。
  • 詳細画面や一覧画面でボタンを押下することで処理を呼び出す。

カスタマイズに着手する段階で、これらのテーマを扱います。

式を記述してビルドしたアプリケーションを関係者でレビューします。入力値によって式が動作すること、および、式の値が正しいことを検証します。

ここまでの設計を行うために求められるWagbyのスキルは次のとおりです

また、式の記述を学ぶことで、いくつかの主キーについて書式を設定することができるようになります。

この章で紹介した「トランザクション」の処理や、複雑な業務処理の実現は、Wagby設計の最終局面であるカスタマイズで対応することになりますので、しばらくお待ちください。この段階では、最終的にこういうカスタマイズが必要になる、という洗い出しまでとします。

次章から「振る舞い」について扱います。振る舞いで扱う最初のテーマは「画面遷移」です。