工作流引擎之十一 activiti7新特性

目录

一,Activiti7 基本介绍

二,下载Activit 官网demo 学习

2.1 进入 Activiti-Core 学习向导页面

2.2 下载 Activiti-Core 的 demo 示例 

2.3 Activiti7 面临的挑战

2.4 Activiti7 的组成部分 

 2.5 Activiti 新的 API 介绍

        2.5.1 TaskRuntime

2.5.2 ProcessRuntime

三,Activiti7 与 SpringBoot 整合开发 

3.1 SpringBoot 整合 Activiti7 的 配置

       3.1.1  引入依赖

        3.1.2 配置文件

3.2 添加SpringSecurity 安全框架整合配置

3.2.1 添加 SecurityUtil 类

3.2.2 添加 DemoApplicationConfig 类

3.2.3 启动类

3.3 使用 SpringBoot 整合 Junit 方式测试新特性

3.4 查看流程定义信息

3.5 启动流程实例

3.6 查询并完成任务 

四,Activiti7+ SpringBoot+SpringMVC 开发

4.1添加 Controller 类


一,Activiti7 基本介绍

Alfresco 软件在 2010 年 5 月 17 日宣布 Activiti 业务流程管理(BPM)开源项目的正式启动,其 首席架构师由业务流程管理 BPM 的专家 Tom Baeyens 担任,Tom Baeyens 就是原来 jbpm 的架构师, 而 jbpm 是一个非常有名的工作流引擎,当然 activiti 也是一个工作流引擎。 Activiti 是一个工作流引擎, activiti 可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务 流程由 activiti 进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的 健壮性,同时也减少了系统开发维护成本。

官方网站:https://www.activiti.org/

版本有:5.x,6.x,7.x

二,下载Activit 官网demo 学习

Activiti7 分为core,cloud两类,我们主要学习core 的内容。

2.1 进入 Activiti-Core 学习向导页面

                activiti-7-developers-guide/getting-started-activiti-core.md at 51a1681c0e4bb5e2f96a6dea73516c9fd53d8521 · Activiti/activiti-7-developers-guide · GitHubhttps://activiti.gitbook.io/activiti-7-developers-guide/ - activiti-7-developers-guide/getting-started-activiti-core.md at 51a1681c0e4bb5e2f96a6dea73516c9fd53d8521 · Activiti/activiti-7-developers-guidehttps://github.com/Activiti/activiti-7-developers-guide/blob/51a1681c0e4bb5e2f96a6dea73516c9fd53d8521/getting-started/getting-started-activiti-core.md

2.2 下载 Activiti-Core 的 demo 示例 

GitHub - AlfrescoArchive/activiti-examples: This repository contains Activiti 7.x Examples

2.3 Activiti7 面临的挑战

        Tom Baeyens 离职,并带着原班 Activiti 开发者又开发了一版新的工作流引擎,叫 flowable。这对于 Activiti 阵营而言是一个不少的挑战。我们现在所学的 Activiti7 是另一个架构师在原有的 Activiti6 基 础上再进行一层封装,所以 API 有着很大的改变。 

2.4 Activiti7 的组成部分 

从这个部分我们可以看到 Activiti 现在已经分成两个不同的部分,Activiti Core 作为 Activiti 的核心部分,本次我们重点解决。另一部分 Activiti Cloud 主要是利用云服务来实现分布式业务流程开发。 

 2.5 Activiti 新的 API 介绍

        Activiti7 为了简化对工作流的操作,特别在原有 API 的基础上再次进行封闭,这样我们原来所学习 的 Activiti 基本 API 就被封闭起来了。具体要学习的包括: ProcessRuntime 接口 TaskRuntime 接口

        2.5.1 TaskRuntime

        下面这个链接是 新API的教材地址

Getting Started - Activiti Core - Activiti & Activiti Cloud Developers Guide

public interface TaskRuntime {
  TaskRuntimeConfiguration configuration();
  Task task(String taskId);
  Page tasks(Pageable pageable);
  Page tasks(Pageable pageable, GetTasksPayload payload);
  Task create(CreateTaskPayload payload);
  Task claim(ClaimTaskPayload payload);
  Task release(ReleaseTaskPayload payload);
  Task complete(CompleteTaskPayload payload);
  Task update(UpdateTaskPayload payload);
  Task delete(DeleteTaskPayload payload);
  ...
}

创建任务

taskRuntime.create(
            TaskPayloadBuilder.create()
                .withName("First Team Task")
                .withDescription("This is something really important")
                .withGroup("activitiTeam")
                .withPriority(10)
           .build());

2.5.2 ProcessRuntime

public interface ProcessRuntime {
  ProcessRuntimeConfiguration configuration();
  ProcessDefinition processDefinition(String processDefinitionId);
  Page processDefinitions(Pageable pageable);
  Page processDefinitions(Pageable pageable,
              GetProcessDefinitionsPayload payload);
  ProcessInstance start(StartProcessPayload payload);
  Page processInstances(Pageable pageable);
  Page processInstances(Pageable pageable,
              GetProcessInstancesPayload payload);
  ProcessInstance processInstance(String processInstanceId);
  ProcessInstance suspend(SuspendProcessPayload payload);
  ProcessInstance resume(ResumeProcessPayload payload);
  ProcessInstance delete(DeleteProcessPayload payload);
  void signal(SignalPayload payload);
  ...
}

获取这两个类,直接@Autowried 就好

        查询流程定义

Page processDefinitionPage = processRuntime
                                .processDefinitions(Pageable.of(0, 10));
logger.info("> Available Process definitions: " +
                  processDefinitionPage.getTotalItems());
for (ProcessDefinition pd : processDefinitionPage.getContent()) {
  logger.info("\t > Process definition: " + pd);
}

1,因为activiti7 和springSecurity 进行了强耦合,所以在进行activiti 增删改查的时候都要做权限验证

2,流程定义需要放在 /src/main/resources/processes/

三,Activiti7 与 SpringBoot 整合开发 

Activiti7 发布正式版之后,它与 SpringBoot2.x 已经完全支持整合开发。我们可以将 Activiti7 与 SpringBoot 整合开发的坐标引入到工程中,从而达到 SpringBoot 支持 Activti7 整合。

SpringBoot 整合 Activti7 的具体步骤如下:

1.添加 SpringBoot 整合 Activti7 的坐标

2.添加 SpringSecurity 安全框架的整合配置信息

3.使用 Activti7 新支持的类来实现工作流开发 ProcessRuntime 接口 TaskRuntime 接口

4.使用新的 API 实现工作流开发,主要包括

        流程定义查询

        启动流程实例

        任务的查询

        任务的完成

3.1 SpringBoot 整合 Activiti7 的 配置

       3.1.1  引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>springBoot_Activiti7New</artifactId>
    <version>1.0-SNAPSHOT</version>


    <!--activiti7与SpringBoot整合的相关依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.activiti/activiti-spring-boot-starter -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

        3.1.2 配置文件

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    username : root
    password : root
    driver-class-name: com.mysql.jdbc.Driver
  activiti:
    database-schema-update: true
    history-level: full
    db-history-used: true

Activiti7与SpringBoot整合时,默认生成的activiti数据库中只有17张表,无另外8张历史表。

Activiti默认关闭了历史表的使用。

在连接数据库的application.yml配置文件中,开启即可,配置文件内容如下。

3.2 添加SpringSecurity 安全框架整合配置

因为 Activiti7 与 SpringBoot 整合后,默认情况下,集成了 SpringSecurity 安全框架,这样我们就要去 准备 SpringSecurity 整合进来的相关用户权限配置信息。

可以查看一下整合 SpringBoot 的依赖包,发现同时也将 SpringSecurity 的依赖包也添加进项目中了,

3.2.1 添加 SecurityUtil 类

添加 SecurityUtil 类。 为了能够快速实现 SpringSecurity 安全框架的配置,所添加的一个组件。


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextImpl;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Component;

import java.util.Collection;

@Component
public class SecurityUtil {

    @Autowired
    private UserDetailsService userDetailsService;

    public void logInAs(String username) {

        UserDetails user = userDetailsService.loadUserByUsername(username);
        if (user == null) {
            throw new IllegalStateException("User " + username + " doesn't exist, please provide a valid user");
        }

        SecurityContextHolder.setContext(new SecurityContextImpl(new Authentication() {
            @Override
            public Collection<? extends GrantedAuthority> getAuthorities() {
                return user.getAuthorities();
            }

            @Override
            public Object getCredentials() {
                return user.getPassword();
            }

            @Override
            public Object getDetails() {
                return user;
            }

            @Override
            public Object getPrincipal() {
                return user;
            }

            @Override
            public boolean isAuthenticated() {
                return true;
            }

            @Override
            public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {

            }

            @Override
            public String getName() {
                return user.getUsername();
            }
        }));
        org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username);
    }
}

3.2.2 添加 DemoApplicationConfig 类

在 Activiti7 官方下载的 Example 中找到 DemoApplicationConfig 类,它的作用是为了实现 SpringSecurity 框架的用户权限的配置,这样我们就可以在系统中使用用户权限信息。本次项目中基 本是在文件中定义出来的用户信息,当然也可以是数据库中查询的用户权限信息。

/*
 * Copyright 2018 Alfresco, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Configuration
@EnableWebSecurity
public class DemoApplicationConfiguration extends WebSecurityConfigurerAdapter {

    private Logger logger = LoggerFactory.getLogger(DemoApplicationConfiguration.class);

    @Override
    @Autowired
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(myUserDetailsService());
    }

    @Bean
    public UserDetailsService myUserDetailsService() {

        InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();

        String[][] usersGroupsAndRoles = {
                {"salaboy", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
                {"ryandawsonuk", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
                {"erdemedeiros", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
                {"other", "password", "ROLE_ACTIVITI_USER", "GROUP_otherTeam"},
                {"admin", "password", "ROLE_ACTIVITI_ADMIN"},
        };

        for (String[] user : usersGroupsAndRoles) {
            List<String> authoritiesStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length));
            logger.info("> Registering new user: " + user[0] + " with the following Authorities[" + authoritiesStrings + "]");
            inMemoryUserDetailsManager.createUser(new User(user[0], passwordEncoder().encode(user[1]),
                    authoritiesStrings.stream().map(s -> new SimpleGrantedAuthority(s)).collect(Collectors.toList())));
        }


        return inMemoryUserDetailsManager;
    }


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .httpBasic();


    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

3.2.3 启动类


import org.activiti.api.process.runtime.connector.Connector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.context.annotation.Bean;

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class Actviti7DemoApplication {
	private Logger logger = LoggerFactory.getLogger(Actviti7DemoApplication.class);



	public static void main(String[] args) {
		SpringApplication.run(Actviti7DemoApplication.class, args);
	}

	@Bean
	public Connector testConnector() {
		return integrationContext -> {
			logger.info("以前叫代理,现在叫连接器被调用啦~~");
			return integrationContext;
		};
	}
}

3.3 使用 SpringBoot 整合 Junit 方式测试新特性

3.4 查看流程定义信息


@RunWith(SpringRunner.class)
@SpringBootTest
public class ActivitiDemoApplicationTests {

    @Autowired
    private ProcessRuntime processRuntime;

    @Autowired
    private TaskRuntime taskRuntime;

    @Autowired
    private SecurityUtil securityUtil;

    /**
     * 查看流程定义
     */
    @Test
    public void contextLoads(){
        securityUtil.logInAs("system");
        Page<ProcessDefinition> processDefinitionPage =processRuntime.processDefinitions(Pageable.of(0, 10));
        System.out.println("可用的流程定义数量:" +processDefinitionPage.getTotalItems());
        for (org.activiti.api.process.model.ProcessDefinition pd :
                processDefinitionPage.getContent()) {
            System.out.println("流程定义:" + pd);
        }
    }
}

        通过 ProcessRuntime 的方法,我们可以查看已经部署的流程定义信息。通过加入 Pageable.of()方法可 以实现分页查询效果。

3.5 启动流程实例

    /**
     * 启动流程实例
     */
    @Test
    public void testStartProcess() {
        securityUtil.logInAs("system");
        ProcessInstance pi = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey("myProcess").build());
        System.out.println("流程实例 ID:" + pi.getId());
    }

现在要启动流程实例,我们可以使用 ProcessRuntime 的 start()方法就可以实现流程实例的启动

3.6 查询并完成任务 

    /**
     * 查询任务,并完成自己的任务
     */
    @Test
    public void testTask() {
        securityUtil.logInAs("ryandawsonuk");
        Page<Task> taskPage=taskRuntime.tasks(Pageable.of(0,10));
        if (taskPage.getTotalItems()>0){
            for (Task task:taskPage.getContent()){

                taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
                System.out.println("任务:"+task);
                taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build()
                );
            }
        }
        Page<Task> taskPage2=taskRuntime.tasks(Pageable.of(0,10));
        if (taskPage2.getTotalItems()>0){
            System.out.println("任务:"+taskPage2.getContent());
        }
    }

使用 TaskRuntime 接口的 tasks()方法实现任务的查询。

使用 TaskRuntime 接口的 claim()方法实现任务拾取。

使用 TaskRuntime 接口的 complete()方法实现任务的完成

四,Activiti7+ SpringBoot+SpringMVC 开发

4.1添加 Controller 类


import org.activiti.api.process.model.ProcessDefinition;
import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
import org.activiti.api.process.runtime.ProcessRuntime;
import org.activiti.api.runtime.shared.query.Page;
import org.activiti.api.runtime.shared.query.Pageable;
import org.activiti.api.task.model.Task;
import org.activiti.api.task.model.builders.TaskPayloadBuilder;
import org.activiti.api.task.runtime.TaskRuntime;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.logging.Logger;

@RestController
public class TestController {
    private Logger logger = (Logger) LoggerFactory.getLogger(TestController.class);
    @Autowired
    private ProcessRuntime processRuntime;
    @Autowired
    private TaskRuntime taskRuntime;
    @Autowired
    private SecurityUtil securityUtil;

    @RequestMapping(value = "/hello")
    public void hello() {
        //首先,取出项目中的最多 10 个流程定义
        Page<ProcessDefinition> processDefinitionPage =
                processRuntime.processDefinitions(Pageable.of(0, 10));
        if (processDefinitionPage.getTotalItems() > 0) {
            //然后,对取出的流程进行启动
            for (ProcessDefinition definition : processDefinitionPage.getContent()) {
                logger.info("流程定义信息:" + definition);

                processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionId(definition.getId()).build());
            }
        }
        //完成 流程启动后, 由于当前项目中 只有 other.bpmn 一个流程,且该流程在设计时,已分配给activitiTeam 组
        //因此我们登录一个activitiTeam组成员,该账号信息会被设置到security上下文中,activiti会对其信息进行读取
        //获取当前用户任务,最多 10 个
        Page<Task> taskPage = taskRuntime.tasks(Pageable.of(0, 10));
        //由于目前只有一个流程,两个任务,我们尝试一下完成一个,看看会发生什么变化
        if (taskPage.getTotalItems() > 0) {
            for (Task task : taskPage.getContent()) {
                logger.info("任务信息:" + task);
                //注意,完成任务前必须先声明

                taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
                //完成任务

                taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build()
                );
            }
        }
        //上一轮任务完成,再看一下,现在流程是否走到了 second?
        Page<Task> taskPage2 = taskRuntime.tasks(Pageable.of(0, 10));
        if (taskPage2.getTotalItems() > 0) {
            logger.info("任务信息:" + taskPage2.getContent());
        }
    }
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Activiti5用户指南(中文版) 第一章、简介 ........................................................................................................................................................................... 1 1.1 许可 ............................................................................................................................................................................ 1 1.2 下载 ............................................................................................................................................................................ 1 1.3 源码 ............................................................................................................................................................................ 1 1.4 所需的软件 ................................................................................................................................................................ 1 1.4.1 JDK 5+ ............................................................................................................................................................... 1 1.4.2 Ant 1.8.1+ ......................................................................................................................................................... 1 1.4.3 Eclipse 3.6.2 ...................................................................................................................................................... 1 1.5 报告问题 .................................................................................................................................................................... 1 1.6 试验性的特性 ............................................................................................................................................................ 1 1.7 内部实现类 ................................................................................................................................................................ 2 第二章、入门 ........................................................................................................................................................................... 3 2.1 一分钟版 .................................................................................................................................................................... 3 2.2 演示设置 .................................................................................................................................................................... 3 2.3 workspace文件夹下的示例项目 ............................................................................................................................... 4 2.4 类库依赖 .................................................................................................................................................................... 4 2.5 Eclipse设置 ................................................................................................................................................................. 5 2.6 查看数据库 ................................................................................................................................................................ 7 2.7 数据库表的命名说明 ................................................................................................................................................ 7 第三章、配置 ........................................................................................................................................................................... 8 3.1 创建ProcessEngine .................................................................................................................................................... 8 3.2 ProcessEngineConfiguration bean ............................................................................................................................... 9 3.3 数据库配置 ................................................................................................................................................................ 9 3.4 作业执行器的激活 .................................................................................................................................................. 10 3.5 邮件服务器的配置 .................................................................................................................................................. 11 3.6 历史的配置 .............................................................................................................................................................. 11 3.7 在表达式、脚本中公布配置的beans .................................................................................................................... 11 3.8 支持的数据库 .......................................................................................................................................................... 11 3.9 创建数据库表 .......................................................................................................................................................... 11 3.10 数据库更 ............................................................................................................................................................ 12 第四章、Spring的集成 .......................................................................................................................................................... 13 4.1 ProcessEngineFactoryBean ........................................................................................................................................ 13 4.2 事务 .......................................................................................................................................................................... 13 4.3 表达式 ...................................................................................................................................................................... 16 4.4 自动资源部署 .......................................................................................................................................................... 17 4.5 单元测试 .................................................................................................................................................................. 17 第五章、API............................................................................................................................................................................ 19 5.1 引擎API .................................................................................................................................................................... 19 5.2 异常策略 .................................................................................................................................................................. 19 5.3 单元测试 .................................................................................................................................................................. 20 5.4 调试单元测试 .......................................................................................................................................................... 21 5.5 web应用程序中的工作引擎 ............................................................................................................................... 23 5.6 程虚拟机(PVM)API ......................................................................................................................................... 24 5.7 表达式 ...................................................................................................................................................................... 25 小觑夜漫酒作伴,破晓黎明当笑言 ii 第六章、部署 ......................................................................................................................................................................... 26 6.1 业务归档文件 .......................................................................................................................................................... 26 6.1.1 编程式部署 ................................................................................................................................................... 26 6.1.2 使用ant部署 ................................................................................................................................................ 26 6.1.3 使用Activiti Explorer部署 ........................................................................................................................... 27 6.2 外部资源 .................................................................................................................................................................. 27 6.2.1 Java类 ............................................................................................................................................................ 27 6.2.2 在程中使用Spring beans ......................................................................................................................... 28 6.2.3 创建独立应用 ............................................................................................................................................... 28 6.3 程定义的版本 ...................................................................................................................................................... 28 6.4 提供程图 .............................................................................................................................................................. 29 6.5 生成程图 .............................................................................................................................................................. 29 第七章、BPMN ....................................................................................................................................................................... 31 7.1 BPMN是什么 ............................................................................................................................................................ 31 7.2 示例 .......................................................................................................................................................................... 31 7.3 定义程 .................................................................................................................................................................. 31 7.4 入门:10分钟指南 ................................................................................................................................................. 32 7.4.1 先决条件 ....................................................................................................................................................... 32 7.4.2 目标 ............................................................................................................................................................... 32 7.4.3 用例 ............................................................................................................................................................... 33 7.4.4 程图 ........................................................................................................................................................... 33 7.4.5 XML的描述 .................................................................................................................................................... 33 7.4.6 启动程实例 ............................................................................................................................................... 34 7.4.7 任务列表 ....................................................................................................................................................... 36 7.4.8 认领任务 ....................................................................................................................................................... 37 7.4.9 完成任务 ....................................................................................................................................................... 38 7.4.10 结束程 ..................................................................................................................................................... 39 7.4.11 代码综述 ..................................................................................................................................................... 39 7.4.12 未来改进 ..................................................................................................................................................... 41 7.5 BPMN 2.0 结构 ......................................................................................................................................................... 41 7.5.1 自定义扩展 ................................................................................................................................................... 41 7.5.2 事件 ............................................................................................................................................................... 42 定时器事件的定义 ......................................................................................................................................... 42 7.5.3 启动事件 ....................................................................................................................................................... 43 7.5.4 空启动事件 ................................................................................................................................................... 44 描述 ................................................................................................................................................................. 44 图形化符号 ..................................................................................................................................................... 44 XML表示 ......................................................................................................................................................... 44 7.5.5 定时器启动事件 ........................................................................................................................................... 44 描述 ................................................................................................................................................................. 44 图形化符号 ..................................................................................................................................................... 44 XML表示 ......................................................................................................................................................... 45 7.5.6 终止事件 ....................................................................................................................................................... 45 7.5.7 空终止事件 ................................................................................................................................................... 45 描述 ................................................................................................................................................................. 45 图形化符号 ..................................................................................................................................................... 45 小觑夜漫酒作伴,破晓黎明当笑言 iii XML表示 ......................................................................................................................................................... 46 7.5.8 异常终止事件 ............................................................................................................................................... 46 描述 ................................................................................................................................................................. 46 图形化符号 ..................................................................................................................................................... 46 XML表示 ......................................................................................................................................................... 46 7.5.9 顺序 ........................................................................................................................................................... 47 描述 ................................................................................................................................................................. 47 图形化符号 ..................................................................................................................................................... 47 XML表示 ......................................................................................................................................................... 47 7.5.10 条件顺序 ................................................................................................................................................. 47 描述 ................................................................................................................................................................. 47 图形化符号 ..................................................................................................................................................... 48 XML表示 ......................................................................................................................................................... 48 7.5.11 默认顺序 ................................................................................................................................................. 49 描述 ................................................................................................................................................................. 49 图形化符号 ..................................................................................................................................................... 49 XML表示 ......................................................................................................................................................... 49 7.5.12 分支 ............................................................................................................................................................. 50 7.5.13 排他分支 ..................................................................................................................................................... 50 描述 ................................................................................................................................................................. 50 图形化符号 ..................................................................................................................................................... 51 XML表示 ......................................................................................................................................................... 51 7.5.14 并行分支 ..................................................................................................................................................... 52 描述 ................................................................................................................................................................. 52 图形化符号 ..................................................................................................................................................... 52 XML表示 ......................................................................................................................................................... 52 7.5.15 包容分支 ..................................................................................................................................................... 54 描述 ................................................................................................................................................................. 54 图形化符号 ..................................................................................................................................................... 55 XML表示 ......................................................................................................................................................... 55 7.5.16 用户任务 ..................................................................................................................................................... 56 描述 ................................................................................................................................................................. 56 图形化符号 ..................................................................................................................................................... 57 XML表示 ......................................................................................................................................................... 57 到期时间 ......................................................................................................................................................... 57 用户的分配 ..................................................................................................................................................... 57 Activiti对于任务分配的扩展 ......................................................................................................................... 58 7.5.17 脚本任务 ..................................................................................................................................................... 60 描述 ................................................................................................................................................................. 60 图形化符号 ..................................................................................................................................................... 60 XML表示 ......................................................................................................................................................... 60 脚本中的变量 ................................................................................................................................................. 61 脚本的结果 ..................................................................................................................................................... 61 7.5.18 Java服务任务 .............................................................................................................................................. 61 描述 ................................................................................................................................................................. 61 图形化符号 ..................................................................................................................................................... 62 小觑夜漫酒作伴,破晓黎明当笑言 iv XML表示 ......................................................................................................................................................... 62 实现 ................................................................................................................................................................. 63 字段的注入 ..................................................................................................................................................... 63 服务任务的结果 ............................................................................................................................................. 65 处理异常 ......................................................................................................................................................... 65 7.5.19 WebService任务 .......................................................................................................................................... 66 描述 ................................................................................................................................................................. 66 图形化符号 ..................................................................................................................................................... 66 XML表示 ......................................................................................................................................................... 66 WebService任务的IO规范 ........................................................................................................................... 67 服务任务的数据输入关系 ............................................................................................................................. 68 服务任务的数据输出关系 ............................................................................................................................. 68 7.5.20 业务规则任务 ............................................................................................................................................. 69 描述 ................................................................................................................................................................. 69 图形化符号 ..................................................................................................................................................... 69 XML表示 ......................................................................................................................................................... 69 7.5.21 邮件任务 ..................................................................................................................................................... 70 Mail服务器的配置 ......................................................................................................................................... 70 定义邮件任务 ................................................................................................................................................. 70 用法举例 ......................................................................................................................................................... 71 7.5.22 Mule任务 ..................................................................................................................................................... 72 定义Mule任务 ............................................................................................................................................... 72 用法举例 ......................................................................................................................................................... 72 7.5.23 手动任务 ..................................................................................................................................................... 73 描述 ................................................................................................................................................................. 73 图形化符号 ..................................................................................................................................................... 73 XML表示 ......................................................................................................................................................... 73 7.5.24 Java接收任务 .............................................................................................................................................. 73 描述 ................................................................................................................................................................. 73 图形化符号 ..................................................................................................................................................... 74 XML表示 ......................................................................................................................................................... 74 7.5.25 执行监听器 ................................................................................................................................................. 74 执行监听器上的字段注入 ............................................................................................................................. 76 7.5.26 任务监听器 ................................................................................................................................................. 77 7.5.27 多实例(for each) .................................................................................................................................... 78 描述 ................................................................................................................................................................. 78 图形化符号 ..................................................................................................................................................... 79 XML表示 ......................................................................................................................................................... 79 边界事件与多实例 ......................................................................................................................................... 80 7.5.28 边界事件 ..................................................................................................................................................... 81 7.5.29 定时器边界事件 ......................................................................................................................................... 81 描述 ................................................................................................................................................................. 81 图形化符号 ..................................................................................................................................................... 81 XML表示 ......................................................................................................................................................... 81 使用边界事件的已知问题 ............................................................................................................................. 82 7.5.30 异常边界事件 ............................................................................................................................................. 83 小觑夜漫酒作伴,破晓黎明当笑言 v 描述 ................................................................................................................................................................. 83 图形化符号 ..................................................................................................................................................... 84 XML表示 ......................................................................................................................................................... 84 示例 ................................................................................................................................................................. 84 7.5.31 中间捕获事件 ............................................................................................................................................. 85 7.5.32 定时器中间捕获事件 ................................................................................................................................. 85 描述 ................................................................................................................................................................. 85 图形化符号 ..................................................................................................................................................... 85 XML表示 ......................................................................................................................................................... 86 7.5.33 子程 ......................................................................................................................................................... 86 描述 ................................................................................................................................................................. 86 图形化符号 ..................................................................................................................................................... 86 XML表示 ......................................................................................................................................................... 87 7.5.34 调用活动(子过程) ................................................................................................................................. 88 描述 ................................................................................................................................................................. 88 图形化符号 ..................................................................................................................................................... 88 XML表示 ......................................................................................................................................................... 88 传递变量 ......................................................................................................................................................... 88 示例 ................................................................................................................................................................. 89 7.6 异步的延续 .............................................................................................................................................................. 90 第八章、表单 ......................................................................................................................................................................... 92 8.1 表单属性 .................................................................................................................................................................. 92 8.2 外部的表单渲染 ...................................................................................................................................................... 95 第九章、JPA ............................................................................................................................................................................ 96 9.1 要求 .......................................................................................................................................................................... 96 9.2 配置 .......................................................................................................................................................................... 96 9.3 用法 .......................................................................................................................................................................... 97 9.3.1 简单示例 ....................................................................................................................................................... 97 9.3.2 查询JPA程变量 ........................................................................................................................................ 99 9.3.3 使用Spring beans和JPA的高级示例 ......................................................................................................... 99 第十章、历史 ....................................................................................................................................................................... 102 10.1 查询历史 .............................................................................................................................................................. 102 10.1.1 HistoricProcessInstanceQuery .................................................................................................................... 102 10.1.2 HistoricActivityInstanceQuery .................................................................................................................... 102 10.1.3 HistoricDetailQuery .................................................................................................................................... 103 10.1.4 HistoricTaskInstanceQuery ......................................................................................................................... 104 10.2 历史的配置 .......................................................................................................................................................... 104 10.3 审查目的的历史 .................................................................................................................................................. 105 第十一章、Eclipse Designer ................................................................................................................................................. 106 11.1 安装 ...................................................................................................................................................................... 106 11.2 Activiti Designer编辑器的特性 ............................................................................................................................ 107 11.3 Activiti Designer的BPMN特性 ............................................................................................................................ 109 11.4 Activiti Designer的部署特性 ................................................................................................................................ 113 11.5 扩展Activiti Designer ........................................................................................................................................... 114 11.5.1 定制画板 ................................................................................................................................................... 114 11.5.1.1 扩展的设置(Eclipse/Maven) .................................................................................................... 115 小觑夜漫酒作伴,破晓黎明当笑言 vi 11.5.1.2 将扩展应用到Activiti Designer ..................................................................................................... 117 11.5.1.3 向画板添加形状 ............................................................................................................................ 119 11.5.1.4 属性的类型 .................................................................................................................................... 122 11.5.1.5 禁用画板中默认形状 .................................................................................................................... 125 11.5.2 校验图形和导出到自定义的输出格式 ................................................................................................... 127 11.5.2.1 创建ProcessValidator扩展 ........................................................................................................... 128 11.5.2.2 创建ExportMarshaller扩展 .......................................................................................................... 129 第十二章、Activiti Explorer ................................................................................................................................................. 131 12.1 用例概述 .............................................................................................................................................................. 131 12.2 用例 ...................................................................................................................................................................... 132 12.3 启动程实例 ...................................................................................................................................................... 132 12.4 我的实例 .............................................................................................................................................................. 132 12.5 管理 ...................................................................................................................................................................... 133 12.6 修改数据库 .......................................................................................................................................................... 135 第十三章、Activiti的附加组件 ........................................................................................................................................... 136 13.1 Cycle....................................................................................................................................................................... 136 13.2 基于Signavio核心组件的Activiti Modeler ........................................................................................................ 136 第十四章、REST API ............................................................................................................................................................. 137 14.1 仓库 ...................................................................................................................................................................... 137 14.1.1 上传部署 ................................................................................................................................................... 137 14.1.2 获取部署 ................................................................................................................................................... 138 14.1.3 获取部署资源 ........................................................................................................................................... 138 14.1.4 删除部署 ................................................................................................................................................... 138 14.1.5 删除多个部署 ........................................................................................................................................... 139 14.2 引擎 ...................................................................................................................................................................... 139 14.2.1 获取引擎 ........................................................................................................................................... 139 14.3 程 ...................................................................................................................................................................... 140 14.3.1 列出程定义 ........................................................................................................................................... 140 14.3.2 获得程定义 ........................................................................................................................................... 140 14.3.3 获得程定义表单 ................................................................................................................................... 141 14.3.4 启动程实例 ........................................................................................................................................... 141 14.3.5 列出程实例 ........................................................................................................................................... 142 14.3.6 获得程实例图 ....................................................................................................................................... 143 14.4 任务 ...................................................................................................................................................................... 143 14.4.1 获取任务概述 ........................................................................................................................................... 143 14.4.2 列出任务 ................................................................................................................................................... 143 14.4.3 获得任务 ................................................................................................................................................... 144 14.4.4 获得任务表单 ........................................................................................................................................... 145 14.4.5 执行任务操作 ........................................................................................................................................... 145 14.4.6 列出表单属性 ........................................................................................................................................... 145 14.5 身份 ...................................................................................................................................................................... 146 14.5.1 登陆 ........................................................................................................................................................... 146 14.5.2 获得用户 ................................................................................................................................................... 146 14.5.3 列出用户的组 ........................................................................................................................................... 146 14.5.4 获取组 ....................................................................................................................................................... 147 14.5.5 列出组内的用户 ....................................................................................................................................... 147 小觑夜漫酒作伴,破晓黎明当笑言 vii 14.6 管理 ...................................................................................................................................................................... 148 14.6.1 列出作业 ................................................................................................................................................... 148 14.6.2 获得作业 ................................................................................................................................................... 149 14.6.3 执行作业 ................................................................................................................................................... 149 14.6.4 执行多个作业 ........................................................................................................................................... 149 14.6.5 列出数据库表 ........................................................................................................................................... 150 14.6.6 获得表的元数据 ....................................................................................................................................... 150 14.6.7 获得表数据 ............................................................................................................................................... 150 第十五章、Cdi集成 ............................................................................................................................................................. 152 15.1 设置activiti-cdi .................................................................................................................................................... 152 15.1.1 查找引擎 ........................................................................................................................................... 152 15.1.2 配置引擎 ........................................................................................................................................... 153 15.1.3 部署程 ................................................................................................................................................... 154 15.2 存在Cdi的上下文相关的程的执行 ............................................................................................................... 154 15.2.1 将会话与程实例关联 ........................................................................................................................... 154 15.2.2 声明式地控制程 ................................................................................................................................... 155 15.2.3 在程中引用Bean .................................................................................................................................. 155 15.2.4 使用@BusinessProcessScoped注解的bean............................................................................................ 156 15.2.5 注入程变量 ........................................................................................................................................... 156 15.2.6 接收程事件 ........................................................................................................................................... 156 15.2.7 附加特性 ................................................................................................................................................... 157 15.3 编写测试 .............................................................................................................................................................. 157 15.4 已知的局限性 ...................................................................................................................................................... 158 附录 ....................................................................................................................................................................................... 159 附录一 认识ant构建脚本 .......................................................................................................................................... 159 附录二 认识发布文件结构 ......................................................................................................................................... 160 翻译日程 ............................................................................................................................................................................... 161 关于文档 ............................................................................................................................................................................... 162
### 回答1: Activiti是一个Java基于BPMN 2.0标准的开源工作引擎。它提供了一个引擎的核心服务和一些可重用的工具和服务,使得用户可以很容易地实现和部署各种程。Activiti能够处理复杂的分支、并行和子程,还提供了人工工作项的管理和自定义的监听器,方便开发人员对程进行更加精准的控制。 Activiti支持多种类型的任务处理,包括人工任务、自动任务和服务任务。这样一来,用户可以更加灵活地控制程的执行,提高程的可靠性和安全性。Activiti还提供了一组程设计器,使得用户可以规划、建模、部署和测试自己的工作程。 Activiti的架构简单、易于使用和扩展,可以与多种框架和技术集成,如Spring、Hibernate、MyBatis等。同时,Activiti的开源特性吸引了众多的开发者参与到该项目中来,形成了一个庞大和活跃的社区,用户可以从中获取到各种技术支持和资源。 总的来说,Activiti是一个功能强大、易学易用的工作引擎,为用户提供了一个完整的、可定制的、稳定的BPM解决方案,适用于各种复杂程的实施。 ### 回答2: Activiti 工作是一个开源的业务程管理系统,旨在简化企业程管理和自动化。它使用 BPMN 2.0 标准和 Java 技术开发,提供了程设计、执行、监控和分析的全方位支持。 具体来说,Activiti 工作提供了以下功能: 1. 程设计。支持 BPMN 2.0 标准,可以可视化设计出业务程图、定义各个任务节点及其属性,方便业务分析和程优化。 2. 程执行。可以将业务程图部署到引擎中,自动执行程,完成各个任务,并且可以根据特定条件进行分支和合并。 3. 程监控。提供实时监控和跟踪程执行情况的功能,包括检查活动、历史记录、日志等。 4. 程分析。提供数据分析和报告,用于确定程瓶颈、优化程、评估程效率和全面评估程的运行状态。 总之,Activiti 工作提供了完善的业务程管理的解决方案,使得企业能够更好地实现程自动化和优化。 ### 回答3: Activiti是一个程管理和工作引擎的开源框架。它为开发人员提供了一种方式来创建和部署复杂的工作应用程序。Activiti采用BPMN2.0标准编写,支持REST,Java和JDBC等不同的应用程序接口。同时,它还具有灵活的用户界面,以便用户能够快速地使用和部署工作应用程序。 Activiti主要包括以下几个方面的功能: 1.程设计和建模。Activiti提供了一个易于使用的图形用户界面来创建和编辑BPMN2.0程定义文件。这使得用户能够快速构建和修改工作应用程序。 2.程部署和执行。Activiti支持将工作部署到不同的环境中,并提供了灵活的API和服务接口,以便用户能够监控和管理运行中的工作应用程序。 3.任务管理和调度。Activiti能够处理工作中不同的任务,包括用户任务、自动任务和服务任务等。它还提供了任务调度和预警功能来帮助用户快速定位和解决问题。 4.报表和分析。Activiti支持不同的报表和分析功能,以帮助用户监测工作应用程序和优化性能。 总之,Activiti是一款强大而又灵活的工作引擎,它提供了一系列功能和服务来协助用户创建高效的工作应用程序。无论是企业级应用还是个人项目,Activiti都能够提供多种适应性和可定制性的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vegetari

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值