美文网首页
一、工作流 Activiti7-11.API新特性Process

一、工作流 Activiti7-11.API新特性Process

作者: 那钱有着落吗 | 来源:发表于2021-04-02 10:06 被阅读0次

在之前的帖子中,都知道我们并没有用什么安全框架去操作,通过传递用户id到变量中即可完成流程,之后的帖子讲解的是新的接口,但是这些接口就需要配合安全框架使用了。

image.png

1.下载官网代码

https://github.com/Activiti/Activiti

image.png

下载完之后,我们复制两个类到本地项目中:


image.png

大致了解下


image.png

从第一张图我们知道要想与ProcessRuntime交互,当前登录用户必须具有ROLE_ACTIVITI_USER 这个角色,所以这个例子中的用户角色都是这个,然后使用下面方法都创建好用户。

下面这个类则是获取用户的信息:


image.png

2.使用ProcessRuntime类

注意:我们在每个方法之前都有 securityUtil.logInAs("zhangsan"); 在实际生产时是不需要这个代码的,因为登录肯定是在之前做了登录的逻辑

首先我们需要用安全框架的测试添加用户的类,把张三李四添加进去,用于测试,需要注意一点的是:在生产环境不是这么做的,具体可以去参考安全框架的使用

image.png
@Autowired
    private ProcessRuntime processRuntime;

    @Autowired
    private SecurityUtil securityUtil;

    //获取流程实例
    @Test
    public void findProcessInstance(){

        securityUtil.logInAs("zhangsan");

        Page<ProcessInstance> processInstancePage = processRuntime.
                processInstances(Pageable.of(0,100));

        System.out.println("流程实例数量:"+processInstancePage.getTotalItems());

        List<ProcessInstance> instanceList = processInstancePage.getContent();

        for(ProcessInstance instance:instanceList){
            System.out.println("getId"+instance.getId());
            System.out.println("getName"+instance.getName());
            System.out.println("getStartDate"+instance.getStartDate());
            System.out.println("getStatus"+instance.getStatus());
            System.out.println("getProcessDefinitionId"+instance.getProcessDefinitionId());
            System.out.println("getProcessDefinitionKey"+instance.getProcessDefinitionKey());
        }

    }
image.png

然后就可以看到具体的流程实例信息了。

3.使用ProcessRuntime启动流程实例

 //启动流程实例
    @Test
    public void startProcessInstance(){
        securityUtil.logInAs("zhangsan");

        ProcessInstance processInstance = processRuntime
                .start(ProcessPayloadBuilder.start()
                .withProcessDefinitionKey("defkey")
                .withName("流程名称")
                .withVariable("name","wang")
                .withBusinessKey("key")
                .build());
    }

这就是使用新的api来启动流程实例了,其中可以指定很多的参数,当然如果要使用这个方法就还是需要画流程图,然后部署了。

4.使用ProcessRuntime删除流程实例

//删除流程实例
    @Test
    public void delProcessInstance(){
        securityUtil.logInAs("zhangsan");

        ProcessInstance processInstance = processRuntime
                .delete(ProcessPayloadBuilder
                        .delete()
                        .withProcessInstanceId("").build());
    }

传入流程实例id,就可以删除了。

挂起与删除差不多,方法是:suspend,激活是:resume

4.使用ProcessRuntime获取实例参数

//获取实例参数
    @Test
    public void findVariables(){
        securityUtil.logInAs("zhangsan");

        List<VariableInstance> variables = processRuntime
                .variables(ProcessPayloadBuilder
                        .variables()
                        .withProcessInstanceId("").build());
    }

相关文章

  • 一、工作流 Activiti7-11.API新特性Process

    在之前的帖子中,都知道我们并没有用什么安全框架去操作,通过传递用户id到变量中即可完成流程,之后的帖子讲解的是新的...

  • 浅谈工作流之Activiti

    工作流(BPM) BPM : 业务流程管理(Business Process Management) 工作流优点 ...

  • AndroidStudio Tips

    Tip 1 Android Studio 2.1 包含一个新的特性: Dex In Process ,该功能可以提...

  • Activiti概念学习

    1.1 Activiti 1.2 工作流基础 BPM BPM(Business Process Managemen...

  • Dynflow中文文档

    dynflow是一个工作流引擎,foreman-katello中主要就是通过它来实现的工作流编排工作 特性概览 跟...

  • 十道前端面试题第【02】篇

    摘要:本篇分享了5道算法题、手写bind函数、跨域解决方案、Vuex工作流程、ES6新特性、学习CSS布局等。 1...

  • JDK新特性书目录

    JDK1.4新特性 JDK1.5新特性 JDK1.6新特性 JDK1.7新特性 JDK1.8新特性

  • Math方法和es新特性

    es6常用 es7新特性 es8新特性 es9新特性 es10新特性

  • 几种开源工作流引擎的简单比较

    目前开源工作流引擎用的最多的是jbpm , 各种特性都不错, 文档也比较多, 下面只简单列举一下 其他几种工作流引...

  • Java11的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

网友评论

      本文标题:一、工作流 Activiti7-11.API新特性Process

      本文链接:https://www.haomeiwen.com/subject/durzcltx.html