link 如何将上下文模型值赋给露天数据列表项?
How link context model value to data list item in alfresco?
问题
有一个包含 conractType
属性 的内容模型和包含 conractType
列的数据列表。需要将contextModel.conractType
指向dataList.conractType
。例如。在插入 属性 值之前,应该检查该值是否存在于数据列表中。还应使用下拉列表中对应于数据列表值的 select 属性 值。
我的解决方案
当尝试 link 直接使用数据列表类型 属性 建模时:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
<!-- Error after adding this property -->
<property name="sc:requestCategory">
<type>sc:contractType</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
</type>
我收到一个错误:
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09180002 Property type 'sc:contractType' of property 'sc:requestCategory' is not found
看来我需要创建:
- 检查输入值的自定义验证器
- 自定义 ui 元素,它从
contractType
列中检索所有可能的列表值。
问题 1
在这种情况下如何正确地 link 验证器和 ui 元素?例如。数据列表有类型和 UUID
。 Link 到 UUID
是硬编码,但是 link 键入会导致意外情况,当有多个值列表时。可能需要在列表数据类型和模型之间进行额外的绑定?
问题 2
我认为这个问题很常见,但是很难找到任何一段代码。 (很多代码具有单独的上下文模型和数据列表,但没有在一起)露天是否为 link 内容模型 属性 数据列表的值提供 build-in 解决方案?
Alfresco 的字典定义了几种数据类型,可以在定义内容模型中的属性时使用这些数据类型 Properties
因此它不会接受您定义的类型。
为了达到您的要求,您可以将 sc:requestCategory 定义为 sc:startProcesstask[=12 的子关联=]
您修改后的模型将如下所示:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
<associations>
<child-association name="sc:requestCategory"">
<target>
<class>sc:contractType</class>
<mandatory>true</mandatory>
<many>false</many>
</target>
</child-association>
</associations>
</type>
问题
有一个包含 conractType
属性 的内容模型和包含 conractType
列的数据列表。需要将contextModel.conractType
指向dataList.conractType
。例如。在插入 属性 值之前,应该检查该值是否存在于数据列表中。还应使用下拉列表中对应于数据列表值的 select 属性 值。
我的解决方案
当尝试 link 直接使用数据列表类型 属性 建模时:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
<!-- Error after adding this property -->
<property name="sc:requestCategory">
<type>sc:contractType</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
</type>
我收到一个错误:
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09180002 Property type 'sc:contractType' of property 'sc:requestCategory' is not found
看来我需要创建:
- 检查输入值的自定义验证器
- 自定义 ui 元素,它从
contractType
列中检索所有可能的列表值。
问题 1
在这种情况下如何正确地 link 验证器和 ui 元素?例如。数据列表有类型和 UUID
。 Link 到 UUID
是硬编码,但是 link 键入会导致意外情况,当有多个值列表时。可能需要在列表数据类型和模型之间进行额外的绑定?
问题 2
我认为这个问题很常见,但是很难找到任何一段代码。 (很多代码具有单独的上下文模型和数据列表,但没有在一起)露天是否为 link 内容模型 属性 数据列表的值提供 build-in 解决方案?
Alfresco 的字典定义了几种数据类型,可以在定义内容模型中的属性时使用这些数据类型 Properties
因此它不会接受您定义的类型。
为了达到您的要求,您可以将 sc:requestCategory 定义为 sc:startProcesstask[=12 的子关联=]
您修改后的模型将如下所示:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
<associations>
<child-association name="sc:requestCategory"">
<target>
<class>sc:contractType</class>
<mandatory>true</mandatory>
<many>false</many>
</target>
</child-association>
</associations>
</type>