【问题标题】:How to obtain a file stored in alfresco repository from JavaDelegate - serviceTask?如何从 JavaDelegate - serviceTask 获取存储在露天存储库中的文件?
【发布时间】:2018-12-06 17:10:04
【问题描述】:

向社区致敬!我正在使用alfresco community edition 6.0.0,目前我正在尝试实现一个工作流,其中我有一个serviceTask 调用实现JavaDelegate 类的自定义类。

bpmn中的serviceTask代码:

<serviceTask id="delegate"
                 activiti:class="org.nick.java.GenerateDocument"
                 name="Get the document">
</serviceTask>

Java 委托类

public class GenerateDocument implements JavaDelegate {
    @Autowired
    RelatedContentService relatedContentService;

    public void execute(DelegateExecution execution) throws Exception {
        ProcessEngine p = ProcessEngines.getDefaultProcessEngine();

    }
}

我想做的是服务任务调用 GenerateDocument 类,我可以以某种方式检索存储在我的 alfresco 存储库中的文档(我知道它的名称和 id,以防需要方法)。

理想情况下,如果我检索此文件,我想对其执行更改并将其保存为 alfresco 存储库中的新文件?上述方案可行吗?根据我目前在网上的搜索,我可能需要这个RelatedContentService relatedContentService 来执行此操作,是否正确?

提前感谢您的帮助:)

【问题讨论】:

    标签: java workflow alfresco activiti bpmn


    【解决方案1】:

    在 Alfresco 中嵌入的 Activiti 中运行的 JavaDelegates 很酷的一点是您可以访问 ServiceRegistry。从那里你可以得到你可能需要的任何豆子。

    例如,假设您的 JavaDelegate 需要运行 Alfresco 操作。您可以使用 ServiceRegistry 来获取 ActionService,然后就可以走了:

        ActionService actionService = getServiceRegistry().getActionService();
        Action mailAction = actionService.createAction(MailActionExecuter.NAME);
        mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, SUBJECT);
        mailAction.setParameterValue(MailActionExecuter.PARAM_TO, notificationEmailAddress);
    

    在您的情况下,如果您想查找节点,您可能希望使用 SearchService 运行查询或使用节点引用查找节点。

    查看 Alfresco 基础 Java API,了解可用于查找、更新和创建节点的服务集合。

    【讨论】:

    • 感谢您的回复,确实我按照您的建议使用了 SearchService,它工作正常,我可以在存储库中执行不同类型的查询并检索 NodeRef 对象。目前,我已经在我的存储库中检索了 .docx 文件的 NodeRef,我想以某种方式获取问题第二部分中所述的内容(实际的 .docx 文件),我是否应该选择使用 FileFolderService上述情况?
    • 非常感谢,我设法使用ContentReader 检索存储在存储库中的文件,如下所示:Map&lt;Object, Object&gt; registeredBeans = Context.getProcessEngineConfiguration().getBeans(); ServiceRegistry registry = (ServiceRegistry) registeredBeans.get(ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY); FileFolderService fileFolderService = registry.getFileFolderService(); ContentReader contentReader = fileFolderService.getReader(nodeRef); InputStream inputStream = contentReader.getContentInputStream(); 然后将输入流对象转换为文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2019-04-06
    相关资源
    最近更新 更多