Activit(一)——综述

一、简介

  Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。

  总所周知,Activiti的创始人也就是JBPM(也是一个优秀的BPM引擎)的创始人,从Jboss离职后开发了一个新的BPM引擎:Activiti。所以,Activiti有很多地方都有JBPM的影子。对比两者,无非都是获取流程引擎,然后得到相应的服务接口,从而通过服务接口实现对应的服务!思想理念几乎一致!

二、核心类

  ProcessEngineConfiguration:


  public static final String DB_SCHEMA_UPDATE_FALSE = "false";
  
  public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";

  public static final String DB_SCHEMA_UPDATE_TRUE = "true";
  protected String processEngineName = ProcessEngines.NAME_DEFAULT;
  protected int idBlockSize = 100;
  protected String history = HistoryLevel.AUDIT.getKey();
  protected boolean jobExecutorActivate;

  protected String mailServerHost = "localhost";
  protected String mailServerUsername; // by default no name and password are provided, which 
  protected String mailServerPassword; // means no authentication for mail server
  protected int mailServerPort = 25;
  protected boolean useSSL = false;
  protected boolean useTLS = false;
  protected String mailServerDefaultFrom = "activiti@localhost";

  protected String databaseType;
  protected String databaseSchemaUpdate = DB_SCHEMA_UPDATE_FALSE;
  protected String jdbcDriver = "org.h2.Driver";
  protected String jdbcUrl = "jdbc:h2:tcp://localhost/activiti";
  protected String jdbcUsername = "sa";
  protected String jdbcPassword = "";
  protected String dataSourceJndiName = null;
  protected boolean isDbIdentityUsed = true;
  protected boolean isDbHistoryUsed = true;
  protected HistoryLevel historyLevel;
  protected int jdbcMaxActiveConnections;
  protected int jdbcMaxIdleConnections;
  protected int jdbcMaxCheckoutTime;
  protected int jdbcMaxWaitTime;
  protected boolean jdbcPingEnabled = false;
  protected String jdbcPingQuery = null;
  protected int jdbcPingConnectionNotUsedFor;
  protected int jdbcDefaultTransactionIsolationLevel;
  protected DataSource dataSource;
  protected boolean transactionsExternallyManaged = false;
  
  protected String jpaPersistenceUnitName;
  protected Object jpaEntityManagerFactory;
  protected boolean jpaHandleTransaction;
  protected boolean jpaCloseEntityManager;


  流程引擎配置,通过其源码可以看出默认使用的数据库是h2,持久化实现使用的Mybatis,通过Get/Set来设置数据库


@Test
public void test01(){
	ProcessEngineConfiguration configuration=ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
	//设置数据库连接信息
	configuration.setJdbcDriver("com.mysql.jdbc.Driver");
	configuration.setJdbcPassword("root");
	configuration.setJdbcUsername("root");
	configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=UTF-8");
	//设置数据库创建规则,是先删除在创建
	configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		
	ProcessEngine processEngine =configuration.buildProcessEngine();
	System.out.println(processEngine);
		
}

   ProcessEngine:


public interface ProcessEngine extends EngineServices {
  
  public static String VERSION = "5.13";

  String getName();

  void close();
}

  流程引擎,继承EngineService接口。Activiti的一切服务都是基于流程引擎进行的,这和JBPM没有什么区别。

  EngineService:


public interface EngineServices {

  RepositoryService getRepositoryService();
  
  RuntimeService getRuntimeService();
  
  FormService getFormService();
  
  TaskService getTaskService();
  
  HistoryService getHistoryService();
  
  IdentityService getIdentityService();
  
  ManagementService getManagementService();
  
}

  ProcessEngine的父类,ProcessEngine获取的一切服务其实都是通过该接口进行获取的;通过该接口可以获取Activiti的封装的各种服务接口!


三、各类服务

  RepositoryService:

  Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对 repository的存取服务。简单的来说,通过该接口,可以实现流程部署

  RuntimeService:

  在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。

  TaskService: 

  在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。

  IdentityService: 

  Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。

  ManagementService: 

  ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。 

  HistoryService: 

  HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。


四、总体流程

  1、通过activiti.cfg.xml来拿到数据库连接的信息,创建一个默认的流程引擎
  2、流程引擎获取getRepositoryService,然后创建createDeployment然后加载bpmn文件和png图片,部署一个流程
  3、部署好流程之后,通过流程引擎获取getRuntimeService,然后启动流程实例

  4、如果需要其他的服务,通过流程引擎获取对应的服务接口,调用对应的接口方法即可!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值