MovementというERP5の主要素の一つを紹介した記事でMovementには様々なNodeを関連づけられることを書きました。今回はこれについて詳しく説明します。
Movementは移動を表す要素です。移動の具体的な例としては受注や発注、サービスの提供、権利の譲渡、保管場所の移動などです。何が移動するのかを表すのにResourceという要素を使います。どこからどこに移動するのか、"どこ"ということに関わる情報はNodeという要素を使います。Nodeは人や法人、組織、倉庫などを表す要素です。Movementが表す移動にどんな意味を持ってNodeが関わっているのかを表すのに様々なCategoryを使います。
Movementが最も頻繁に使うcategoryはsourceとdestinationです。sourceはMovementの始点を表し、destinationはMovementの終点を表します。Movementによって表される移動で運ばれるものはResourceで表しますので、sourceはResourceで表されるものが出ていくところで、destinationはそれが入るところとなります。多くの場合、sourceとdestinationは倉庫や会社、人物を表します。概念的なものを表すときの例としては例えば会計伝票をERP5で表現するときにsourceとdestinationは勘定科目になります。勘定科目はお金を入れる箱と考えられるからです。
このあとに紹介する色々なcategoryはみんな接頭語としてsourceかdestinationが付いてきます。先に書いたようにMovementは始点と終点がある移動です。始点、つまり送り手のほうの立場として登場するNodeにはsourceなんとかというcategoryを使い、受け手のほうの立場として登場するNodeにはdestinationなんとかというcategoryを使うという決まりになっています。
この2つも非常に頻繁に使うcategoryです。sourceとdestinationという接頭語にsectionが付いています。これで表しているのは基本的に所有権を持つ者が誰かということです。sourceとdestinationは場所についての情報、source_sectionとdestination_sectionは所有権についての情報となります。売買取引を表すときにはsource_sectionは今回の取引で売買されるものの元の所有者で普通は売買によってお金を得る者です。そしてdestination_sectionは売買されるものの新しい所有者で売買によってお金を払う者です。
sourceとdestination、source_sectionとdestination_sectionを使うと色々な出来事を表現できます。実際、ERP5で何らかの移動を表現しようとすれば必ずこれらのCategoryを使うことになります。
sourceとdestination、source_sectionとdestination_section以外にも様々なCategoryをERP5はあらかじめ用意しています。これらは今までのERPプロジェクトの経験などを元に作られていて、もしも新たな共通に使える概念を見つけることができたら随時追加しています。いくつか良く使うものを取り上げてみます。
これらのCategoryのセットをArrowと名付けてERP5のProperty Sheetの一つとして登録しています。興味のある方はソースコードをみてみてください。
https://lab.nexedi.cn/nexedi/erp5/tree/master/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/Arrow
次回もMovementとArrowをもう少しみていきたいと思います。
読んでいただきありがとうございました。