以下是一个使用 Alfresco Repo Side 处理文档上传的示例代码:
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.content.filestore.FileContentStore;
import org.alfresco.repo.model.Repository;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class DocumentUploadHandler implements OnCreateNodePolicy {
private static final Log logger = LogFactory.getLog(DocumentUploadHandler.class);
private Repository repositoryHelper;
private ServiceRegistry serviceRegistry;
public void setRepositoryHelper(Repository repositoryHelper) {
this.repositoryHelper = repositoryHelper;
}
public void setServiceRegistry(ServiceRegistry serviceRegistry) {
this.serviceRegistry = serviceRegistry;
}
public void init() {
// Register the behaviour
this.repositoryHelper.registerPolicy(NodeServicePolicies.OnCreateNodePolicy.QNAME, this);
}
@Override
public void onCreateNode(ChildAssociationRef childAssocRef) {
NodeRef nodeRef = childAssocRef.getChildRef();
NodeService nodeService = serviceRegistry.getNodeService();
if (nodeService.exists(nodeRef) && nodeService.getType(nodeRef).equals(ContentModel.TYPE_CONTENT)) {
RetryingTransactionHelper transactionHelper = repositoryHelper.getTransactionService().getRetryingTransactionHelper();
RetryingTransactionHelper.RetryingTransactionCallback
以上代码是一个 Alfresco Repo Side 的处理程序,用于在创建新文档时向文档中写入内容。在 onCreateNode 方法中,我们首先检查节点的类型是否为 ContentModel.TYPE_CONTENT,然后使用 ContentWriter 将文本内容写入文档。
注意:上述示例代码是基于 Alfresco 6.2 版本编写的,其中使用了一些 Alfresco 的核心类和接口。如果你的 Alfresco 版本不同,可能需要做相应的调整。此外,还需要将以上代码进行适当的集成和配置,以便在文档创建时触发该处理程序。