温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Activiti中常用服务组件是什么

发布时间:2021-10-21 09:12:05 来源:亿速云 阅读:146 作者:柒染 栏目:大数据

这篇文章将为大家详细讲解有关Activiti中常用服务组件是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Activiti针对工作流的一系列操作,都封装在他的服务组件当中,因此要学习activiti,首先要做的就是学习了解他的常用服务组件。

1.ativiti常用服务组件的基本介绍:

  1. RepositoryService:提供一系列管理流程定义和流程部署的API。 

  2. RuntimeService:在流程运行时对流程实例进行管理与控制。

  3. TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务分本任务等。

  4. IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户以及它们之间的关系。

  5. ManagementService:提供对流程引擎进行管理和维护的服务。

  6. HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。

  7. FormService:表单Service,用于读取和流程,任务相关的表单数据。

  8. DynamicBpmnService:使用该服务,可以不需要重新部署流程模型,就可以实现对流程模型的部分修改。

2.如何理解服务组件之间的关系

如何理解服务组件之间的关系,必须先从工作流的使用角度来理解。

以报销流程为例:

工作流并不是凭空出现的,并不是员工提起报销请求,系统就毫无根据的生成了工作流。而是需要管理员来规定报销这个工作流中各个环节,各个条件。那么管理员如何来使用activiti来定义一个新的工作流呢?RepositoryService为我们提供了与此相关的一系列方法,可以让我们能够定义工作流并将工作流部署到服务器当中去。可以将RepositoryService理解为创建java面向对象思想中的类。

当有了一个流程的定义,员工如何去申请一个报销流程呢,因为每一个员工情况都不一样,他们都需要有个独立的流程来解决各自的问题(类似于java中的对象)。RuntimeService为我们提供了相应的方法,来根据一个流程定义去创建流程实例,并可以对流程实例进行一系列的操作。

此处还有一个task的概念,task可以理解为我们流程图中的一个审批任务(节点),一个流程实例只要被创建了并且还没有结束,就一个其中某一个节点上。而我们也可以使用RuntimeService来获取我们流程当前所处于task。而TaskService则可以对task进行完成、管理各种操作。

此外activiti还通过IdentityService提供给我们了统一管理提起流程、参与流程的所有用户和用户组的一系列方法,并允许通过taskService中的方法为task设定系统中的审批用户或者用户组。

HistoryService则是因为我们有时需要查询已经走完全部流程的流程实例,他给我们提供一系列操作历史数据的方法。

ManagementService和DynamicBpmnService暂时用到的还比较少,以后再补充。//todo

3.如何创建服务组件

普通java项目中我们需要先声明工作流引擎ProcessEngine ,然后根据工作流引擎来获取各种服务组件。

ProcessEngine engine= ProcessEngines.getDefaultProcessEngine();
        //工作流定义相关服务
        RepositoryService rs=engine.getRepositoryService();
        //工作流实例相关服务
        RuntimeService runtimeService=engine.getRuntimeService();
        //任务相关服务服务
        TaskService taskService=engine.getTaskService();

        //将流程模板存储到数据库中
        rs.createDeployment().addClasspathResource("first.bpmn").deploy();

        //创建一个流程实例
        ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1");

        //普通员工填写完成请假任务  task即为当前节点
        Task 
       task=taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
        System.out.println("当前流程节点:"+task.getName());
        taskService.complete(task.getId());

而spring项目中我们可以直接通过@Autowired注解的方式来获取我们的服务组件,如下

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private TaskService taskService;

    @Autowired
    private IdentityService identityService;

    @Autowired
    private HistoryService historyService;

关于Activiti中常用服务组件是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI