activiti5.16 项目实战笔记 并整合activiti modeler到项目实现业务人员自定义工作流程

本文介绍了如何在SSM项目中整合Activiti,包括eclipse配置Activiti开发环境、数据库生成、Activiti modeler的整合,以及使用中的关键API。通过这些步骤,实现了业务人员能够自定义工作流程的功能。
摘要由CSDN通过智能技术生成

Activiti 项目实战笔记

项目中用到的所有jar 包和插件 我都整理出来放在
Activiti 实战工具包

(一) eclipse 配置activiti 开发环境

首先在eclipse中装activiti插件方便开发过程中进行流程设计
我这里主要写离线安装方法,网络方便的话可以选择在线安装。。百度一大堆,更简单。
1,拿到工具包中的 activiti插件安装.zip 解压。
2,将解压好的activiti+文件夹里的3个jar文件复制到eclipse安装目录的plugins目录下。
3,删除eclipse安装目录下,configuration文件夹里的org.eclipse.update文件夹,重启eclipse。

(二) ssm 整合activiti

1,首先在项目中导入activiti 的相关jar 包,libs 文件夹中的所有jar包拷贝到项目的jar包目录lib下,然后build path 。其他spring MVC相关的jar包我就不说了。

2,接下来就添加配置文件

新增配置文件activiti.cfg.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
	
	<import resource="classpath:applicationContext.xml"/>
	<!-- 
		ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
		//连接数据库的配置
		processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
		processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&characterEncoding=utf8");
		processEngineConfiguration.setJdbcUsername("root");
		processEngineConfiguration.setJdbcPassword("root");
		
		/**
		 	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";如果表不存在,自动创建表
		 */
		processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
	 -->
<!-- 	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> -->
		<!-- 连接数据的配置 --> 
<!-- 		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> -->
<!-- 		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&amp;characterEncoding=utf8"></property> -->
<!-- 		<property name="jdbcUsername" value="root"></property> -->
<!-- 		<property name="jdbcPassword" value="root"></property> -->
		<!-- 没有表创建表 -->
<!-- 		<property name="databaseSchemaUpdate" value="true"></property> -->
<!-- 	</bean> -->

</beans>
然后在applicationContext.xml配置中新增配置如下:
<!-- 配置activiti的数据源 -->
	<bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/activiti?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;transformedBitIsBoolean=true"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property> 
    </bean>

<!-- activiti事务管理 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource2" />
    </bean>

<!-- 加载activiti引擎 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration" />
    </bean>
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource2" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="databaseSchemaUpdate" value="true" />
        <property name="jobExecutorActivate" value="false" />
         <property name="activityFontName" value="微软雅黑"/>  
        <property name="labelFontName" value="微软雅黑"/>
        <property name="mailServerHost" value="localhost"/>
        <property name="mailServerPort" value="5025"/>
    </bean>
    
     <!-- 创建activiti提供的各种服务 -->
    <!-- 工作流仓储服务 -->
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
    <!-- 工作流运行服务 -->
    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
    <!-- 工作流任务服务-->
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
    <!-- 工作流历史数据服务-->
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
    <!-- 工作流管理服务-->
    <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
    <!-- 表彰-->
    <bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
    <!-- 工作流唯一服务 -->
    <bean id="IdentityService" factory-bean="processEngine" factory-method="getIdentityService"/>

(三) 生成activiti 数据库

数据库的生成我是用代码生成,其实不用我下面的这段代码生成23张表也没事。因为我在配置文件中配置了

 <property name="databaseSchemaUpdate" value="true" />

这个属性就是 如果表不存在,自动创建表
启动的时候如果数据源库中没有activiti库以及表 则自动会生成activiti库以及23张表

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
	/**使用代码创建工作流需要的23张表*/
	@Test
	public void createTable(){
		ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
		//连接数据库的配置
		processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
		processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8");
		processEngineConfiguration.setJdbcUsername("root");
		processEngineConfiguration.setJdbcPassword("123456");
		
		/**
		 	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";如果表不存在,自动创建表
		 */
		processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		//工作流的核心对象,ProcessEnginee对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		System.out.println("processEngine:"+processEngine);
	}

(四) 整合activiti modeler 到项目

由于我们项目要求流程这块要业务人员自定义流程(当时内心崩溃!!),所以初步设计打算用activiti modeler 编辑器作为用户的自定义流程编辑器(我是不信业务人员能用这个画出正确的流程图,当然后面我进行了一系列的改版和优化 终于改成能让一个傻子都能画出流程来着,主要是我前端太菜了 不然我自己写个编辑器)。

以上都是吐槽

下面我们把编辑器整合到我们项目中

activiti 官方的项目包是这个 Activiti-develop.zip 解压后放在tomcat下面 修改数据库配置文件(具体的修改方法附录在下面 见附录1)即可启动进入activiti后台系统 ,这个系统也是整合了activiti modeler 编辑器可以在线编辑部署流程, 不过也没啥用, 我们已经把activiti整合到我们自己的项目中了。现在的目的是把activiti modeler编辑器也整合到我们自己的项目中。

下图是官方给的activiti后台管理系统

这里写图片描述

下图是activiti modeler 编辑器图片

这里写图片描述

接下来正式把modeler编辑器整合到我们自己的系统中

1,首先在web.xml中添加rest相关

<servlet >
        <servlet-name> ExplorerRestletServlet</servlet-name >
        <servlet-class> org.restlet.ext.servlet.ServerServlet</servlet-class >
        <init-param>
            <!-- Application class name -->
            <param-name> org.restlet.application</param-name >
            <param-value> com.isprint.ssf.controller.ExplorerRestApplication</param-value >
        </init-param>
    </servlet >

    <servlet >
        <servlet-name> RestletServlet</servlet-name >
        <servlet-class> org.restlet.ext.servlet.ServerServlet</servlet-class >
        <init-param>
            <!-- Application class name -->
            <param-name> org.restlet.application</param-name >
            <param-value> org.activiti.rest.service.application.ActivitiRestServicesApplication </param-value>
        </init-param>
    </servlet >

        <!-- Catch all service requests -->
        <servlet-mapping>
        <servlet-name> RestletServlet</servlet-name >
        <url-pattern> /rest/*</ url-pattern>
    </servlet-mapping >
        <servlet-mapping>
               <servlet-name> ExplorerRestletServlet</servlet-name >
               <url-pattern> /modeler/service/*</url-pattern >
        </servlet-mapping>

2,然后拿到我给的资料包中的modeler文件夹,把文件夹中相关的文件放到项目对应的目录下

如下:
这里写图片描述

这里写图片描述

这里写图片描述

3,添加支持activiti modeler 正常运行的jar
在modeler 文件夹中的lib 下存放了支持

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值