オープンモデリング記法(OML)(構想中)
ルールについてあれこれ書くのに、自然言語ではなくモデリング用の言語を使えないか、あれこれ考えています。
内部オブジェクト:< >
外部オブジェクト:<< >>
お金の流れ:・・・・>
情報の流れ:−−−−>
商品(モノ)の流れ:====>
AND条件:|−−−−>
OR条件:||−−−−>
不在条件:−−−−|
道具立てはこんなところです。これを使って簡単なルールを記述してみます。
<支払方法:現金>:
<<消費者>>|・・・・><通販会社>|====><<消費者>>;
消費者が通販会社にお金を支払って初めて商品が消費者に渡されることを表現しています。
<支払方法:振込振替>:
<<消費者>>|−−−−><通販会社>|====><<消費者>>
<<消費者>>|・・・・><通販会社>;
こちらは消費者から注文が入ると、通販会社はその場で商品を出荷します。商品を受け取った消費者が通販会社に代金を振り込むパターンを表しています。ただこの2行目のルールに記述されている<<消費者>>が、1行目にある2つの<<消費者>>の内、どちらを指しているか自明ではありません。これを記述する記法が必要になります。そこでオブジェクトの識別子を導入して書き直すとこうなります。
<支払方法:振込振替>:
<<消費者:1−1>>|−−−−><通販会社:1−1>|====><<消費者:1−2>>
<<消費者:1−2>>|・・・・><通販会社:2−1>;
あるいはこうです。
<支払方法:振込振替>:
<<消費者:1−1>>|−−−−><通販会社:1−1>
<通販会社:1−1>|====><<消費者:2−1>>
<<消費者:2−1>>|・・・・><通販会社:3−1>;
この「3−1」の意味はルールの中の3行目の1番目のオブジェクトと言う意味です。
更に情報にしろお金にしろ、それを保有しているオブジェクトだけが流れの起点になるわけではありません。これを理解するために支払方法の代引きを例にします。
<支払方法:代引き>:
<<消費者:1−1>>|−−−−><通販会社:1−1>
<通販会社:1−1>|====><<運送会社:2−1>>
<<運送会社:2−1>>|====><<消費者:3−1>>
<<消費者:3−1>>/・・・・><<運送会社:4−1>>
<<運送会社:4−1>>|・・・・><通販会社:5−1>;
少々込み入ってきましたが、この中の「/・・・・」は集金を意味しています。つまり送金ではなくこちらからお金を集めに行くと言う意味になります。 KAI