我如何将一个方面及其属性与C#DotCmis Alfresco中的文档相关联

时间:2014-02-24 16:02:57

标签: c# alfresco bitnami dotcmis

我在.net网络应用程序中工作,而不是需要能够在Alfresco中创建文档,然后将特定方面和他的属性与这些文档相关联。

我创建了我的方面(nameModel.xml,name-model-context.xml扩展文件夹中的所有文件,messages文件夹中的name.properties和custom-slingshot-application-context.xml share-config-custom.xml在web-extension文件夹中)/ opt / bitnami / apache-tomcat / shared / classes / alfresco / path。

在我的C#代码中,我有两种方法:

        public void PutFile(CMISDocument document)
    {
        IObjectId cmisObjectFolder = (IObjectId)session.GetObject(document.FolderId);

        IDictionary<string, object> properties = new Dictionary<string, object>();
        properties[PropertyIds.Name] = document.ContentStreamFileName;
        properties[PropertyIds.ObjectTypeId] = "cmis:document";
        properties[PropertyIds.CreationDate] = DateTime.Now;

        ContentStream contentStream = new ContentStream();
        contentStream.FileName = document.ContentStreamFileName;
        contentStream.MimeType = document.ContentStreamMimeType;
        contentStream.Length = document.Stream.Length;
        contentStream.Stream = document.Stream;

        IObjectId objectId = session.CreateDocument(properties, cmisObjectFolder, contentStream, DotCMIS.Enums.VersioningState.None);

        PutFileDetail(objectId,document.Owner);
    }

        internal void PutFileDetail(IObjectId objectId,string actorIdCard)
    {
        ICmisObject cmisObject = session.GetObject(objectId);

        IDictionary<string, object> properties = new Dictionary<string, object>();
        properties[PropertyIds.ObjectTypeId] = "adm:aridoctypBase";
        properties["adm:actidcard"] = actorIdCard;

        IObjectId newId = cmisObject.UpdateProperties(properties);

        if (newId.Id == cmisObject.Id) 
        {
            // the repository updated this object - refresh the object
            cmisObject.Refresh();
        }
        else
        {
            // the repository created a new version - fetch the new version
            cmisObject = session.GetObject(newId);
        }
    }

使用此代码,我得到一个错误:

第一个用于创建文档,第二个用于添加方面及其属性。

我正在寻找答案,我发现了这个:http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fopencmis-ext-intro.html

但是真的不知道如何安装Alfresco OpenCMIS Extension;他们说我需要把jar文件放在我的类路径中。但我不知道bitnami虚拟机中的类路径是什么。

其他的事情是,如果我在创建方面时忘了一些东西。

pd:对我而言,重要但同样紧迫的是,如果有一天需要将Alfresco更改为Sharepoint或其他企业内容管理,那么这样做的方法可能会有效

我会帮助你。


谢谢!你知道我在哪里可以看到一个很好的例子吗?我认为第一点:我需要改变我的模型。在这一刻,我有方面标签内的属性。我需要创建类型和属性...你能告诉我我是否会以良好的方式...?

这是我的模型xml文件(aridocsModel.xml)简历:

<?xml version="1.0" encoding="UTF-8"?>
<model name="adm:aridocsModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

        ...

        <aspects>
                <aspect name="adm:aridocsBase">
                <title>AriDocs Base</title>
                                <properties>
                                  <property name="adm:createdate">
                                          <type>d:date</type>
                                  </property>
                                  <property name="adm:disabledate">
                                          <type>d:date</type>
                                  </property>
                                  <property name="adm:artiddoc">
                                          <type>d:text</type>
                                  </property>
                                  <property name="adm:accnumber">
                                          <type>d:text</type>
                                  </property>
                                  <property name="adm:actidcard">
                                          <type>d:text</type>
                                  </property>
                                </properties>
                </aspect>
        </aspects>
</model>

现在,我怎么不能与方面合作;我需要类型......

<?xml version="1.0" encoding="UTF-8"?>
<model name="adm:aridocsModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

        ...

        <types>
                <type name="adm:aridoctypBase">
                        <title>Ari Docs Type Base</title>
                        <parent>cm:content</parent>
                           <properties>
                                  <property name="adm:createdate">
                                          <type>d:date</type>
                                  </property>
                                  <property name="adm:disabledate">
                                          <type>d:date</type>
                                  </property>
                                  <property name="adm:artiddoc">
                                          <type>d:text</type>
                                  </property>
                                  <property name="adm:accnumber">
                                          <type>d:text</type>
                                  </property>
                                  <property name="adm:actidcard">
                                          <type>d:text</type>
                                  </property>
                                </properties>
                </type>
        </types>

        ...
        <!-- i need put the aspect here... Even if i will work with types... -->
        ...

</model>

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

创建文档时不需要扩展名。该扩展仅用于管理方面。

根据我所听说的,所有语言都没有扩展名,所以我不确定你的项目中是否包含.dll。

您是否阅读了以下主题:integrate a .net application with alfresco using cmis

并且:.net wcf and create document