0

问题

有一个带有conractType属性的内容模型,以及带有conractType列的数据列表。contextModel.conractType需要指向dataList.conractType。例如,在插入属性值之前,应检查该值是否存在于数据列表中。还使用应该从对应于数据列表值的下拉列表中选择属性值。

我的解决方案

当尝试直接将模型属性与数据列表类型链接时:

<!-- 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

所以看来我需要创建:

  1. 检查输入值的自定义验证器
  2. contractType从列中检索所有可能的列表值的自定义 ui 元素。

问题 1

在这种情况下如何正确链接验证器和 ui 元素?例如数据列表有类型和UUID。链接到UUID是硬编码,但是当有多个值的列表时,链接到类型会导致意外情况。可能需要在列表数据类型和模型之间进行额外的绑定吗?

问题2

我认为这个问题很常见,但是很难找到任何一段代码。(很多代码具有单独的上下文模型和数据列表,但没有在一起) alfresco 是否提供了将内容模型属性值链接到数据列表的内置解决方案?

4

1 回答 1

2

Alfresco's Dictionary has defined several data types that can be used while defining properties in content model Properties

So it wont accept the type that you have defined.

In order to achieve your requirement, you can go for defining sc:requestCategory as child association of sc:startProcesstask

your modified model will looks like:

<!-- 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>
于 2016-10-18T05:05:01.870 回答