Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Alfresco:尚未在数据字典中定义类_Javascript_Dictionary_Alfresco - Fatal编程技术网

Javascript Alfresco:尚未在数据字典中定义类

Javascript Alfresco:尚未在数据字典中定义类,javascript,dictionary,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 lis

我正在使用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>

alfresco/module/${project.artifactId}/model/orpDataListModel.xml
错误

org.activiti.engine.activitieException:调用时发生异常 TaskListener:调用TaskListener:06010019时出现异常失败 要执行提供的脚本:类 {}orpDataListModel已 未在数据字典中定义


数据列表完全独立运行。这里有什么问题?

问题出在我的Javascript上,因为您需要使用类型名称,而不是模型名称。以下是完成的工作代码,其中orp:orpList是在模型中定义的类型名称:

// 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:orpList";
  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:orpList")
opportunity.properties["orpdl:name"] = "Florian";
opportunity.save();

露天模型可以包含0或更多类型,以及约束、方面等其他内容。您可以在

因此,在创建类型或将类型设置到数据列表时,需要使用类型的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的一些代码验证您在创建时提供了有效的类型,但不是全部。Datalist项类型是在使用之前不会验证的一个区域,这就是为什么您能做到这一点

您的模型中是否应该没有
条目用于
orpdl:orpDataListModel
?我有,这就是问题所在吗?我应该引用类型名而不是模型名吗?看起来这就是问题所在。谢谢一个模型可以包含多个类型,因此对于这样的事情,您总是需要引用类型,而不是它所在的模型。一个相关的问题是:对两种不同的模型使用相同的名称空间是一种不好的做法吗?例如,对于数据列表模型和工作流模型,使用“prefix:”?不,我们经常这样做,以便与一个逻辑对象相关的所有内容都位于同一个模型/名称空间中