有没有办法以编程方式了解Alfresco中自定义模型的属性?
例如,oracle中的数据字典可帮助您查找由哪些列名和列数据类型定义的表。
我的目标是java中的示例代码,它提取所有自定义内容模型,它们的属性,它们的属性数据类型等。例如,我的示例代码应该返回给我一个自定义内容模型,它具有整数属性名称为“No”,字符串属性名称为“Description”。我知道DictionaryComponent
可以实现这一点,但我不知道应该如何使用它。
答案 0 :(得分:2)
看看org.alfresco.service.cmr.dictionary.DictionaryService。
您的Java代码是否会在露天环境中运行(作为/ alfresco webapp的一部分)或在外部运行?
如果您在上下文中运行,那么Alfreso Java Foundation API是您选择DictionaryService所在的选择。只需将bean注入java代码即可。
如果您的代码在露天之外运行,那么您可以选择Alfresco REST API或CMIS。
如果你仍然迷路,那么先训练自己。杰夫写了一些好文章http://ecmarchitect.com/alfresco-developer-series&也是一本书。
也是一个很好的起点 - Alfresco开发人员文档:http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/concepts/dev-for-developers.html
答案 1 :(得分:0)
感谢很多alfresian回复,我的代码示例如下所示: 我找到了来自this URL
的示例代码 public void GetAllAvailableDataTypes() throws IOException
{
Session session = getSession();
boolean includePropertyDefintions = true;
for (Tree t : session.getTypeDescendants(
null, // start at the top of the tree
-1, // infinite depth recursion
includePropertyDefintions // include prop defs
)) {
printTypes(t, "");
}
}
public void printTypes(Tree tree, String tab) {
ObjectType objType = (ObjectType) tree.getItem();
String type = objType.getId();
if(true)//type.endsWith("hstcase"))
{
System.out.println(tab + "TYPE:" + objType.getDisplayName() +
" (" + objType.getDescription() + ")");
//Print some of the common attributes for this type
System.out.print(tab + " Id:" + "-----"+ objType.getId() + "-----");
System.out.print(" Fileable:" + objType.isFileable());
System.out.print(" Queryable:" + objType.isQueryable());
if (objType instanceof DocumentType) {
System.out.print(" [DOC Attrs->] Versionable:" +
((DocumentType)objType).isVersionable());
System.out.println(" Content:" +
((DocumentType)objType).getContentStreamAllowed());
Map<String, org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition<?>> props = objType.getPropertyDefinitions();
Set<String> keys = props.keySet();
Collection<org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition<?>> porpsAsCollection = props.values();
for(org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition<?> p: porpsAsCollection)
{
//System.out.println(p.getDescription());
PropertyType pt = p.getPropertyType();
System.out.println("Display Name: "+ p.getDisplayName());
System.out.println("Local Name: "+ p.getLocalName());
System.out.println("Attribute Type: "+ pt.value());
}
}
System.out.println(""); // end the line
}
List<Tree> childs = tree.getChildren();
for (Tree t : childs) {
// there are more - call self for next level
printTypes(t, tab + " ");
}
}