问候社区!我正在使用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
来做到这一点,对吗?
在此先感谢您的帮助:)
答案 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,以了解可用于查找,更新和创建节点的服务集合。