前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Activiti7工作流引擎-Activiti入门体验

Activiti7工作流引擎-Activiti入门体验

作者头像
cwl_java
发布2019-12-30 17:56:34
1.6K0
发布2019-12-30 17:56:34
举报
文章被收录于专栏:cwl_Java

第5章 Activiti 入门体验

5.1 流程定义

5.1.1 Activiti-Designer 使用

5.1.1.1 Palette(画板)

在 eclipse 或 idea 中安装 activiti-designer 插件即可使用,画板中包括以下结点: Connection—连接 Event—事件 Task—任务 Gateway—网关 Container—容器 Boundary event—边界事件 Intermediate event- -中间事件 流程图设计完毕保存生成.bpmn 文件。

5.1.1.2 新建流程(IDEA 工具)

首先选中存放图形的目录(本次我们选择 resources 下的 bpmn 目录),点击菜单:New-BpmnFile,如下图所示:

在这里插入图片描述
在这里插入图片描述

弹出如下图所示框:

在这里插入图片描述
在这里插入图片描述

起完名字 holiday 后(默认扩展名为 bpmn),就可以看到进入了流程设计页面,如图所示:

在这里插入图片描述
在这里插入图片描述
5.1.1.3 新建流程(Eclipse 工具)

首先选中存放图形的目录(本次我们选择 resources 下的 bpmn 目录), File-New-Other 菜单,打开如下窗口。

在这里插入图片描述
在这里插入图片描述

创建成功:

在这里插入图片描述
在这里插入图片描述

左侧区域是绘图区,右侧区域是 palette 画板区域 鼠标先点击画板的元素即可在左侧绘图。

5.1.2 绘制流程

在这里插入图片描述
在这里插入图片描述

图形绘制好后会生成两个文件:

在这里插入图片描述
在这里插入图片描述

自动生成图形,需要设置 eclipse:

在这里插入图片描述
在这里插入图片描述

5.1.3 指定流程定义 key

流程定义 key 即流程定义的标识,在 eclipse 中通过 properties 视图查看流程的 key

建议:相同的业务流程,流程定义的 key 名字定义一样,比如,如果需要创建新的业务流程,请假流程则使用新的 key。

在这里插入图片描述
在这里插入图片描述

5.1.4 指定任务负责人

在 properties 视图指定每个任务结点的负责人,比如下边是填写请假单的负责人为 zhangsan

在这里插入图片描述
在这里插入图片描述

5.2 部署流程定义

部署流程定义就是要将上边绘制的图形即流程定义(.bpmn)部署在工作流程引擎 activiti 中,方法如下:

使用 ProcessEngine 创建 RepositoryService,代码如下:

代码语言:javascript
复制
        // 获取repositoryService
        RepositoryService repositoryService = processEngine
                .getRepositoryService();
        //部署对象
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("diagram/myholiday.bpmn")// bpmn文 件
                .addClasspathResource("diagram/myholiday.png")// 图片文件
                .name("请假申请流程")
                .deploy();
        System.out.println("流程部署id:" + deployment.getId());
        System.out.println("流程部署名称:" + deployment.getName());

执行此操作后 activiti 会将上边代码中指定的 bpm 文件和图片文件保存在 activiti 数据库。

5.3 启动一个流程实例

流程定义部署在 activiti 后就可以通过工作流管理业务流程了,也就是说上边部署的请假申请流程可以使用了。

针对该流程,启动一个流程表示发起一个新的请假申请单,这就相当于 java 类与 java 对象的关系,类定义好后需要 new 创建一个对象使用,当然可以 new 多个对象。对于请假申请流程,张三发起一个请假申请单需要启动一个流程实例,请假申请单发起一个请假单也需要启动一个流程实例。

代码如下:

代码语言:javascript
复制
    // 启动一个流程实例
    @Test
    public void startProcessInstance() {
        // 获取RunTimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
        // 根据流程定义key启动流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myholiday01");
        System.out.println(" 流程定义 id : " +
                processInstance.getProcessDefinitionId());
        System.out.println("流程实例id:" + processInstance.getId());
        System.out.println(" 当前活动 Id : " + processInstance.getActivityId());
    }

5.4 任务查询

流程启动后,各各任务的负责人就可以查询自己当前需要处理的任务,查询出来的任务都是该用户的待办任务。

代码语言:javascript
复制
    // 查询当前个人待执行的任务
    @Test
    public void findPersonalTaskList() {
        // 任务负责人
        String assignee = "zhangsan";// 创建TaskService
        TaskService taskService = processEngine.getTaskService();
        List<Task> list = taskService.createTaskQuery()//
                .processDefinitionKey("myholiday01")//
                .taskAssignee(assignee)//只查询该任务负责人的任务
                .list();
        for (Task task : list) {
            System.out.println(" 流 程 实 例 id : " +
                    task.getProcessInstanceId());
            System.out.println("任务id:" + task.getId());
            System.out.println("任务负责人:" + task.getAssignee());
            System.out.println("任务名称:" + task.getName());
        }
    }

5.5 任务处理

任务负责人查询待办任务,选择任务进行处理,完成任务。

代码语言:javascript
复制
    // 完成任务
    @Test
    public void completTask() {
        //任务id
        String taskId = "8305";
        // 创建TaskService
        TaskService taskService = processEngine.getTaskService();
        //完成任务
        taskService.complete(taskId);
        System.out.println("完成任务id="+taskId);
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第5章 Activiti 入门体验
    • 5.1 流程定义
      • 5.1.1 Activiti-Designer 使用
      • 5.1.2 绘制流程
      • 5.1.3 指定流程定义 key
      • 5.1.4 指定任务负责人
    • 5.2 部署流程定义
      • 5.3 启动一个流程实例
        • 5.4 任务查询
          • 5.5 任务处理
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档