如何从JavaDelegate-serviceTask获取存储在露天仓库中的文件?

时间:2018-12-06 17:10:05

标签: java workflow alfresco activiti bpmn

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

serviceTask bpmn 代码:

<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类,我可以以某种方式检索存储在露天仓库中的文档(我知道它的名称和ID,以防万一需要一种方法)。

理想情况下,如果我检索此文件,我想对其进行更改并将其另存为alfresco存储库中的新文件吗?以上方案可行吗?根据我到目前为止在网上进行的搜索,我可能需要使用RelatedContentService relatedContentService来做到这一点,对吗?

在此先感谢您的帮助:)

1 个答案:

答案 0 :(得分:4)

对于Alfresco内嵌在Activiti中的Activiti中运行的JavaDelegates来说,很酷的一点是您可以访问ServiceRegistry。从那里可以获得可能需要的任何bean。

例如,假设您需要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,以了解可用于查找,更新和创建节点的服务集合。