オープンモデリング記法(OML)(構想中3)
ルールの拡張があるなら、ルールの圧縮もあっていいはずですので、この概念を説明します。
その前に支払方法:掛売と言うルールを説明します。中身はほとんど振込振替と似ていますが、取引先が消費者ではなく企業相手です。いわゆるB2Bです。
<支払方法:掛売>:
<<企業:1>>|−−−−><通販会社:1>
<通販会社:1>|====><<企業:2>>
<通販会社:3>|−−−−><<企業:3>>
<<企業:3>>|・・・・><通販会社:3>
<<企業:3>>|・・・・|<通販会社:4>
<通販会社:4>|−−−−><<企業:5>>;
振込振替との違いは、振込振替では商品を顧客に届ける都度代金が支払われるのに対して、掛売では、商品を企業に届けるタイミングとその代金を支払ってもらうタイミングが一致しておらず、企業毎に定めた締め日でもって一括で請求を掛け所定の入金日にまとめて支払ってもらいます。
上のルールの記述で言えば、商品を出荷するのが<通販会社:1>であり、企業に請求を掛けるのは<通販会社:3>と異なる識別子を持つことから、請求書の発行のタイミングが違うことが分かります。更に、代金を支払うのが、商品を受け取った<<企業:2>>ではなく、請求書を受け取った<<企業:3>>であることも分かります。
ルールの圧縮
さてルールの圧縮ですが、他社与信と自社与信と呼ぶ支払方法のルールを例にして説明します。
<支払方法:自社与信>:
<<顧客:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<顧客:2>>
<<顧客:3>> |・・・・><通販会社:3>
<<顧客:3>> |・・・・|<通販会社:4>
<通販会社:4> |−−−−><<顧客:5>>;
<支払方法:他社与信>:
<<顧客:1>> |−−−−><通販会社:1>
<<与信会社:2>>/−−−−><通販会社:1>
<通販会社:1> |====><<顧客:3>>
<通販会社:1> |−−−−><<与信会社:4>>
<<顧客:5>> /・・・・><<与信会社:4>>
<<顧客:5>> /・・・・|<<与信会社:4>>
<<与信会社:4>>||・・・・><通販会社:6>;
このうち他社与信の記述はカードの支払方法と同じです。他にもローン(ショッピングローン)やリース契約がこれに当たります。
これに対して前者の自社与信は、支払方法の振込振替、掛売、自動振替が対応していますが、これらをならべて比較するとそれぞれ微妙に形が違っています。そこでルールの圧縮と言う操作で、すべて自社与信と同じ形に変形していきます。
■振込振替→自社与信への圧縮
<支払方法:振込振替>:
<<消費者:1>>|−−−−><通販会社:1>
<通販会社:1> |====><<消費者:2>>
<<消費者:2>>|・・・・><通販会社:3>
<<消費者:2>>|・・・・|<通販会社:4>
<通販会社:4> |−−−−><<消費者:5>>;
↓
<支払方法:自社与信>:
<<顧客:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<顧客:2>>
<<顧客:3>> |・・・・><通販会社:3>
<<顧客:3>> |・・・・|<通販会社:4>
<通販会社:4> |−−−−><<顧客:5>>;
振込振替の消費者を顧客にし、消費者の識別子を無視すると、両者の、オブジェクト間のお金、情報、商品の流れの順序関係がすべて一致します。ここで、この消費者を顧客に変えると言うことと識別子を無視すると言う操作をルールの圧縮と呼びます。更に、ルールを圧縮することで同じ形になるルール同士のことをルールが同型であると呼ぶことにします。
■掛売→自社与信への圧縮
<支払方法:掛売>:
<<企業:1>>|−−−−><通販会社:1>
<通販会社:1>|====><<企業:2>>
<通販会社:3>|−−−−><<企業:3>>
<<企業:3>>|・・・・><通販会社:3>
<<企業:3>>|・・・・|<通販会社:4>
<通販会社:4>|−−−−><<企業:5>>;
↓
<支払方法:自社与信>:
<<顧客:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<顧客:2>>
<<顧客:3>> |・・・・><通販会社:3>
<<顧客:3>> |・・・・|<通販会社:4>
<通販会社:4> |−−−−><<顧客:5>>;
企業を顧客に書き替えるのは先ほどと一緒です。更に、今回は3行目の情報の流れの行を、思い切って削除します。なぜ削除できるのかは後で議論しますので気にしないで下さい。(と言っても気になる人には気になりますね(笑))
この行の削除もルールの圧縮操作です。そうするとやっぱり自社与信と同型になります。
■自動振替→自社与信への圧縮
<支払方法:自動振替>:
<<消費者:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<消費者:2>>
<通販会社:1> |−−−−><<収納会社:3>>
<<消費者:4>> /・・・・><<収納会社:3>>
<<消費者:4>> /・・・・|<<収納会社:5>>
<<収納会社:3>>|・・・・><通販会社:6>
<<収納会社:5>>|−−−−><通販会社:7>
<通販会社:7> |−−−−><<消費者:8>>;
↓
<支払方法:自社与信>:
<<顧客:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<顧客:2>>
<<顧客:3>> |・・・・><通販会社:3>
<<顧客:3>> |・・・・|<通販会社:4>
<通販会社:4> |−−−−><<顧客:5>>;
今度は自動振替です。これは見ただけでかなり形が違っていますが、バッサリ圧縮作業をやります。
消費者を顧客に書き替えるのはいつもと同じです。3行目のルールも削除します。更に、今回はルールの中から収納会社を取り外します。4行目の『<<収納会社:3>>』と6行目の『<<収納会社:3>>|・・・・>』を削除して前後をつなげると、『<<消費者:4>>/・・・・><通販会社:6>』と、自社与信の3行目のルールと同じルールができあがります(/と|の違いは無視します)。5行目と7行目も同様の操作をすると、自社与信の4行目のルールができあがるのは同じです。
んな削除削除やりゃあ、どんなルールでも同型にできちゃうじゃん?
と言うツッコミが当然聞こえてきますが今は無視します。
代引きの圧縮
それでは代引きルールの圧縮操作をやってみましょう。
代引きのルールは次のようになります。
<支払方法:代引き>:
<<消費者:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<運送会社:2>>
<<運送会社:2>>|====><<消費者:3>>
<<消費者:3>> /・・・・><<運送会社:4>>
<<運送会社:4>>|・・・・><通販会社:5>;
このルールから運送会社を削除すると次のようになります。
<支払方法:代引き>:
<<消費者:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<消費者:3>>
<<消費者:3>> /・・・・><通販会社:5>;
う〜ん、なんだか怪しいルールになってしまいました。そうです、元のルールに、消費者からお金の流れがない場合のルールの記述が漏れていました。
と言うことで、正しい記述に書き直すとこうなります。
<支払方法:代引き>:
<<消費者:1>> |−−−−><通販会社:1>
<通販会社:1> |====><<運送会社:2>>
<<消費者:3>> /・・・・><<運送会社:3>>
<<消費者:3>> /・・・・|<<運送会社:4>>
<<運送会社:3>>|====><<消費者:5>>
<<運送会社:3>>|・・・・><通販会社:6>
<<運送会社:4>>|====><通販会社:7>;
このルールからあらためて運送会社を削除するとこうなります。
<支払方法:代引き圧縮後>:
<<消費者:3>>/・・・・><通販会社:1>
<<消費者:3>>/・・・・|<通販会社:7>
<通販会社:1> |====><<消費者:5>>;
これをよく見ると消費者からのお金の流れの不在条件以外は支払方法:現金と同じです。お金の流れがなければ何もしないと言うことは、この行も削除できると言うことです。つまり結果は現金ルールと同型になります。
ルールの圧縮の整理
これまでの話しから以下のことが言えます。
支払方法と言うルールを圧縮すると、<支払方法:現金>、<支払方法:他社与信>、<支払方法:自社与信>の3種類の同型のルールに集約されると言うことです。
さて次回から<商品区分>と呼ぶルールについて議論することにします。 KAI
コメント