あなたのコメントに基づいて、@ Alch3mi5tの回答に追加情報を追加してみましょう。ここでは、架空のビジネス ケースを使用しています。
基本的に、Alfresco モデルは、制約、タイプ、およびアスペクトの 3 つのセクションで構成されます。さらに、ミックスに関連付けを追加します。
alfresco の各ノード (誤って「レコード」と考えるかもしれません) にはタイプがあります。したがって、この型にはプロパティ (「列」) があります。これで基本型ができました。それがVendorと呼ばれているとしましょう。Name と Tax ID (string と int) の 2 つの props があります。タイプ定義は次のようになります。
<type name="myCompany:vendor">
<title>Vendor</type>
<parent>cm:folder</parent>
<properties>
<property name="myCompany:vendorName">
<title>Vendor name</title>
<type>d:text</type>
</property>
<property name="myCompany:vendorTaxID">
<title>Vendor Tax ID</title>
<type>d:int</type>
</property>
</properties>
</type>
string 型と int 型の vendorName 列と vendorTaxID 列を持つ db テーブルと同じように、型があります。
単純な正規表現の例である、税 ID に何らかの制約を追加する必要があるとしましょう。したがって、次のように定義された制約があります。
<constraint name="myCompany:taxIdConstraint" type="REGEX">
<parameter name="expression">
<value>^ID[1-9](\-[1-9])*</value>
</parameter>
<parameter name="requiresMatch">
<value>true</value>
</parameter>
</constraint>
次に、taxId プロパティを変更するだけです。
<property name="myCompany:vendorTaxID">
<title>Vendor Tax ID</title>
<type>d:int</type>
<constraints>
<constraint ref="myCompany:taxIdConstraint">
</constraints>
</property>
そのため、そのプロパティに制約を設定しました。
- アスペクト
次に、アスペクトが必要になります。Alfresco では、テーブルにいくつかの列を追加したい場合と同じです。
いいえ - より良いアナロジー、元のテーブルからの関係が必要です。したがって、null の場合は null です。ただし、代わりに、レコードと他のテーブルとの 1 対 1 (通常) の関係を作成します。
ここでのベースラインは、アスペクト テーブルだけに何かを追加することは決してないということです。これは、ベース タイプへの追加としてのみ提供されます。アスペクトの例:
<aspect name="myCompany:myAspect">
<title>Address aspect</title>
<properties>
<property name="myCompany:city">
<title>City</title>
<type>d:text</type>
</property>
</properties>
</aspect>
これをタイプ定義に追加すると、これを必須のアスペクトにすることができます (プロパティセクションの直後):
<mandatory-aspects>
<aspect>myCompany:myAspect</aspect>
</mandatory-aspects>
これで、ベースの「テーブル」に「レコード」を追加できます。これを必須の側面として追加した場合、各レコードには名前、納税者番号、都市の 3 つの小道具があります。必須でない場合、各レコードには 2 つのベース列がありますが、3 番目の列を追加して少数を選択できます。プログラムまたは手動は関係ありません。
- アソシエーション
ミックスにアソシエーションを追加することもできます。これは、2 つのノード (または「レコード」) 間のリンクのみです。したがって、型のプロパティセクションの後に、関連付けセクションを追加できます。(一部の) ベンダーをその作成者 (キー アカウント) に接続するとします。
これをタイプに追加します:
<associations>
<association name="myCompany:keyAccountManager">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
そこにあります!Vendor テーブルの一部またはすべての Vendor をそれぞれの KAM に接続できるようになりました (たとえば、Vendor で何かが起こっているときに KAM に電子メールを送信できます)。基本的に、Vendors テーブルと Users テーブル間の 1-n 接続です。1-n は、1 つのベンダーを多くの人に接続できることを意味します。異なるベンダーを 1 人に接続することもできます。(多くのパラメータ)。
同じ方法で、アスペクトに関連付けを追加することもできます。
<aspect name="myCompany:stateAspect">
<properties>
...
</properties>
<associations>
<association name="myCompany:myState">
<source>
<mandatory>true</mandatory>
<many>true</many>
</source>
<target>
<class>cm:folder</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
これで、通常の alfresco フォルダー (cm:folder タイプ) を作成し、州にちなんで名前を付けて、各都市をそれらのフォルダーの 1 つに接続することができます。(最善の方法ではありませんが、私の要点を示しています。)したがって、この関連付けは必須です。つまり、必須ではないこの他の側面(元のものではない)を追加する場合は、関連付けを作成する必要があります。
したがって、必要なことを行うために組み合わせを試してください。
これで、サンプル モデルができました。
<?xml version="1.0" encoding="UTF-8"?>
<model name="myCompany:myContentModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>Custom Content Model</description>
<author>Zlatko Đurić</author>
<published>2013-03-22</published>
<version>1.0</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
</imports>
<namespaces>
<namespace uri="myCompany.model" prefix="bv"/>
</namespaces>
<constraints>
<constraint name="myCompany:taxIdConstraint" type="REGEX">
<parameter name="expression">
<value>^ID[1-9](\-[1-9])*</value>
</parameter>
<parameter name="requiresMatch">
<value>true</value>
</parameter>
</constraint>
</constraints>
<types>
<type name="myCompany:vendor">
<title>Vendor</type>
<parent>cm:folder</parent>
<properties>
<property name="myCompany:vendorName">
<title>Vendor name</title>
<type>d:text</type>
</property>
<property name="myCompany:vendorTaxID">
<title>Vendor Tax ID</title>
<type>d:int</type>
<constraints>
<constraint ref="myCompany:taxIdConstraint">
</constraints>
</property>
</properties>
<mandatory-aspects>
<aspect>myCompany:myAspect</aspect>
</mandatory-aspects>
<associations>
<association name="myCompany:keyAccountManager">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</type>
</types>
<aspects>
<aspect name="myCompany:myAspect">
<title>Address aspect</title>
<properties>
<property name="myCompany:city">
<title>City</title>
<type>d:text</type>
</property>
</properties>
<associations>
<association name="myCompany:myState">
<source>
<mandatory>true</mandatory>
<many>true</many>
</source>
<target>
<class>cm:folder</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
</aspects>
</model>
There, I hope this helps you.