javascript - Alfresco:数据字典中尚未定义类

标签 javascript dictionary alfresco

我正在使用 Javascript 从工作流程创建自定义数据列表项。如果我使用默认的 Alfresco 数据列表,但不是我的自定义列表,则 Javascript 可以正常工作。

.bpmn 文件中的 JavaScript 摘录

// Get the site name and dataLists 
var site = siteService.getSite("Testing");
var dataLists = site.getContainer("dataLists");

// Check for data list existence 
if (!dataLists) {
  var dataLists = site.createNode("dataLists", "cm:folder");

  var dataListProps = new Array(1);
  dataListProps["st:componentId"] = "dataLists";
  dataLists.addAspect("st:siteContainer", dataListProps);
  dataLists.save();
}

var orpList = dataLists.childByNamePath("orplist1");

if (!orpList) {
  var orpList = dataLists.createNode("orplist1","dl:dataList");

  // tells Share which type of items to create
  orpList.properties["dl:dataListItemType"] = "orpdl:orpDataListModel";
  orpList.save();

  var orpListProps = [];
  orpListProps["cm:title"] = "ORP List";
  orpListProps["cm:description"] = "A contact list generated by a javascript.";
  orpList.addAspect("cm:titled", orpListProps);
}

var opportunity = orpList.createNode(null, "orpdl:orpDataListModel")
opportunity.properties["orpdl:name"] = "Florian";
opportunity.save();

模型摘录

<model name="orpdl:orpDataListModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

<namespaces>
    <namespace uri="http://www.test.com/model/orpDataListModel/1.0" prefix="orpdl" />
</namespaces>

上下文 bean

<!-- Data List Model Registration -->
<bean id="${project.artifactId}_dictionaryBootstrapOrp" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
    <property name="models">
        <list>
            <value>alfresco/module/${project.artifactId}/model/orpDataListModel.xml</value>
        </list>
    </property>
</bean>

错误

org.activiti.engine.ActivitiException: Exception while invoking TaskListener: Exception while invoking TaskListener: 06010019 Failed to execute supplied script: Class {http://www.test.com/model/orpDataListModel/1.0}orpDataListModel has not been defined in the data dictionary

数据列表可以完美地自行运行。这里有什么问题吗?

最佳答案

Alfresco 模型可以包含 0 种或多种类型,以及约束、方面等其他内容。您可以在 Alfresco documentation on the subject 中阅读有关内容建模的更多信息。

因此,当您创建类型或将类型设置到数据列表时,您需要使用类型的 ID,而不是它来自的模型

因此,您的两条有问题的线路是:

orpList.properties["dl:dataListItemType"] = "orpdl:orpDataListModel";

var opportunity = orpList.createNode(null, "orpdl:orpDataListModel");

对于具有短 qname orpdl:orpList 的自定义数据列表类型,这些应该是:

orpList.properties["dl:dataListItemType"] = "orpdl:orpList";

var opportunity = orpList.createNode(null, "orpdl:orpList");

Alfresco 的某些部分会验证您在创建时是否指定了有效类型,但不是全部。数据列表项类型是一个在使用之前不会验证的区域,这就是您取得如此进展的原因!

关于javascript - Alfresco:数据字典中尚未定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165527/

相关文章:

javascript - 等待 mocha runner 事件的异步函数

javascript - 将类名附加到包含在 div 类下的 iframe id

java - 如何使用 Jackson 将 json 数组转换为 java hashmap

露天分享 : does it have document content search like Sharepoint?

iframe 的 javascript - 加载消息以及如果没有连接该怎么办

javascript - JS Globalize - 加载 json cldr

c++ - 在 public const 方法中访问私有(private)成员

java - 包含列表的 gwt RequestFactory 映射

workflow - 如何在 Alfresco Share 中自定义工作流程详细信息页面?

integration - 将 mule 与 alfresco 结合起来