无法在自定义alfresco文件夹中创建cmis:文档

无法在自定义alfresco文件夹中创建cmis:文档,alfresco,cmis,opencmis,Alfresco,Cmis,Opencmis,我正在使用open cmis在Alfresco repository 5.1e中创建带有附件的文件夹自定义类型。文件夹已成功创建,但对于创建文档cmis:document-cm:content作为附件,我遇到以下异常: 原因:org.apache.chemistry.opencmis.commons.exceptions.cmisconstraintextException:无法将“cmis:document”类型的对象添加到此文件夹! 在org.apache.chemistry.opencmi

我正在使用open cmis在Alfresco repository 5.1e中创建带有附件的文件夹自定义类型。文件夹已成功创建,但对于创建文档cmis:document-cm:content作为附件,我遇到以下异常:

原因:org.apache.chemistry.opencmis.commons.exceptions.cmisconstraintextException:无法将“cmis:document”类型的对象添加到此文件夹! 在org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomSubservice.ConvertStatusCodeAbstractAtomSubservice.java:514[chemistry-opencmis-client-bindings-1.0.0.jar:1.0.0] 在org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomSubservice.PostAbstractAtomSubservice.java:717[chemistry-opencmis-client-bindings-1.0.0.jar:1.0.0] 在org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.createDocumentObjectServiceImpl.java:122[chemistry-opencmis-client-bindings-1.0.0.jar:1.0.0] 位于org.apache.chemistry.opencmis.client.runtime.SessionImpl.createDocumentSessionImpl.java:1197[chemistry-opencmis-client-impl-1.0.0.jar:1.0.0] 在org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocumentFolderImpl.java:88[chemistry-opencmis-client-impl-1.0.0.jar:1.0.0] 位于org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocumentFolderImpl.java:471[chemistry-opencmis-client-impl-1.0.0.jar:1.0.0] 在com.salviol.frops.common.ejbs.DcmIntegrationEJB.createDocumentDcmIntegrationEJB.java:208[frops-common-ejb-0.0.1.jar:] 在com.salviol.frops.common.ejbs.DcmIntegrationEJB.createCaseDcmIntegrationEJB.java:67[frops-common-ejb-0.0.1.jar:] 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法[rt.jar:1.8.0_40] 在sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62[rt.jar:1.8.040] 在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43[rt.jar:1.8.040] java:497[rt.jar:1.8.0_40] 位于org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocationManagedReferenceMethodInterceptor.java:52 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.WeavedInterceptor.processInvocationWeavedInterceptor.java:53 位于org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocationUserInterceptorFactory.java:63 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.InterceptorContext$invocation.proceedInterceptorContext.java:407 在org.jboss.as.weld.ejb.jsr29bindingSinterceptor.domethodInterception jsr29bindingSinterceptor.java:82[wildfly-weld-8.1.0.Final.jar:8.1.0.Final] 在org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processinvocationjsr29bindingsinterceptor.java:93[wildfly-weld-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocationUserInterceptorFactory.java:63 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.WeavedInterceptor.processInvocationWeavedInterceptor.java:53 位于org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocationUserInterceptorFactory.java:63 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocationExecutionTimeInterceptor.java:43[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 在org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocationSBInvocationInterceptor.java:47[wildfly-jpa-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.InterceptorContext$invocation.proceedInterceptorContext.java:407 在org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvokeAbstractEJBRequestScopeActivationInterceptor.java:46[weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23] 在org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocationEjbRequestScopeActivationInterceptor.java:83[wildfly-weld-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvoc ationConcurrentContextInterceptor.java:45[wildfly-ee-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.InitialInterceptor.processInvocationInitialInterceptor.java:21 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.invocation.ChainedInterceptor.processInvocationChainedInterceptor.java:61 位于org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocationComponentDispatcherInterceptor.java:53 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 位于org.jboss.as.ejb3.component.interceptors.nonpooledjbcomponentinstanceassociationinterceptor.processinvocationnonpooledjbcomponentinstanceassociationinterceptor.java:59[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final] 位于org.jboss.invocation.InterceptorContext.proceedInterceptorContext.java:309 在org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeincalertxcmtxinterceptor.java:251[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final] ... 174多

以下是将文档添加到文件夹的源代码方法:

private Document createDocument(Session cmisSession, Folder parentFolder, byte[] file, String fileName, String fileType) {

Document document = null;

try {

Map<String, Object> docProperties = new HashMap<String, Object>();    
docProperties.put(PropertyIds.OBJECT_TYPE_ID,  "cmis:document");
docProperties.put(PropertyIds.NAME, fileName);

    ContentStream contentStream = cmisSession.getObjectFactory().createContentStream(fileName, file.length, fileType, new ByteArrayInputStream(file));

        document = parentFolder.createDocument(docProperties, contentStream, null);

    } catch (CmisContentAlreadyExistsException ccaee) {
        document = (Document) cmisSession.getObjectByPath(parentFolder.getPath() + "/" + fileName);            
    }

    return document;
}
我尝试过对state MAJOR进行版本控制,但没有,但问题仍然存在。创建的文件夹具有标准权限inherit=true,并且对于每个站点用户具有适当的权限


是否有人对Cmis约束有相同的问题

这是关于你的文件夹,而不是你的文档。 请看一下导致错误的代码,错误的原因将变得不一致。有一个名为cmis:AllowedChildObjectTypeId的属性,这就是您所追求的

您的模型是如何定义的

public void checkChildObjectType(CMISNodeInfo folderInfo, String childType)
    {
        TypeDefinitionWrapper targetType = folderInfo.getType();
        PropertyDefinitionWrapper allowableChildObjectTypeProperty = targetType
                .getPropertyById(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS);
        List<String> childTypes = (List<String>) allowableChildObjectTypeProperty.getPropertyAccessor().getValue(
                folderInfo);

        if ((childTypes == null) || childTypes.isEmpty())
        {
            return;
        }

        if (!childTypes.contains(childType))
        {
            throw new CmisConstraintException("Objects of type '" + childType + "' cannot be added to this folder!");
        }
    }

你好自定义模型在alfresco repo端定义,并包含扩展cm:文件夹类型及其自定义属性、特性和关联的自定义类型。哪里是添加cmis的正确位置:AllowedChildObjectTypeId、alfresco repo侧自定义模型或cmis创建文件夹上的附加属性?