activiti学习由浅入深01 weir 2014-12-26 11:06:29.0 java,activiti 1258 对于工作流activiti的学习首先我们要清楚的是activiti的由来?它能做什么?为什么要用activiti?我想这些问题通过网络大家都可以找到答案。 那么接下来的问题就是怎么学习activiti,怎么入手?怎么个学习步骤? 在大家还是一团糟的时候我们先看看jbpm与activiti的渊源,网络上面也有很多的介绍和争论,说实话我也是一知半解,如果你想深入的去理解工作流的原理和底层实现,那可能要花费一定的时间和实践的积累了。由浅入深,循序渐进的学习方法是非常可行的,从入门到会使用再到精通最后可以达到重构源码,这个过程可不是一天两天。 我想我们在这里要实现的目标就是会使用,至于更深入的理解那要看自己的能力和时间了。 本人对工作流的理解也不是很深入,因此才有了这部分的学习总结,也是对自己学习的一次加强。 首先我对工作流的理解是工作流就是要把实际业务流程化、图形化、可视化、自动化。 Activiti的流程设计eclipse插件:http://activiti.org/designer/update/ 同时支持myeclipse2014没问题 activiti 还有网页版的设计器 我们在wars里面看到的activiti-explorer.war 就是activiti的网页设计器,可以直接放在tomcat里面运行感受一下,后面我们会把它整合到我们的项目里面。 在我看来会使用activiti需要做到以下步骤: 1.会配置activiti到你的项目里面。如果你的项目使用的是spring hibernate mybatis等框架,那使用activiti就非常容易集成上去。 2.会使用activiti提供的eclipse插件或网页设计器 设计流程图。 3.会使用activiti各api接口实现自己的业务。 其中最难的是第二点,需要我们了解bpmn2.0。 Activity下载地址:官网 目前最新版百度网盘activiti-5.16.3.zip http://yun.baidu.com/share/link?shareid=1130816486&uk=1292275996 项目我用spring来介绍activiti的使用,首先你可以用你搭建好的项目,这个根据自己的情况,这里我就不介绍框架集成的知识了。假如你有spring hibernate struts等项目都可以的。 我们先把activiti集成上去 Activiti5.16用户手册:http://www.mossle.com/docs/activiti/ 里面有与spring整合的介绍 applicationContext.xml: <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:aop=”http://www.springframework.org/schema/aop” xmlns:context=”http://www.springframework.org/schema/context” xmlns:jpa=”http://www.springframework.org/schema/data/jpa” xmlns:mvc=”http://www.springframework.org/schema/mvc” xmlns:tx=”http://www.springframework.org/schema/tx” xmlns:util=”http://www.springframework.org/schema/util” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd”> <context:annotation-config/> <tx:annotation-driven transaction-manager=”transactionManager” proxy-target-class=”false”/> <!– 数据源 –> <bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”> <property name=”driverClassName” value=”com.mysql.jdbc.Driver” /> <property name=”url” value=”jdbc:mysql://localhost:3306/oa?useUnicode=true&characterEncoding=utf8″ /> <property name=”username” value=”root” /> <property name=”password” value=”336393″ /> </bean> <!– 整合jpa –> <bean id=”entityManagerFactory” class=”org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean”> <property name=”dataSource” ref=”dataSource”></property> <property name=”persistenceUnitName” value=”activitioa”></property> <property name=”persistenceXmlLocation” value=”classpath:META-INF/persistence.xml”></property> <property name=”jpaVendorAdapter”> <bean class=”org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter”> <property name=”showSql” value=”true”></property> <property name=”database” value=”MYSQL”></property> </bean> </property> </bean> <bean id=”transactionManager” class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”> <property name=”dataSource” ref=”dataSource” /> </bean> <!– 整合activiti –> <bean id=”processEngineConfiguration” class=”org.activiti.spring.SpringProcessEngineConfiguration”> <property name=”dataSource” ref=”dataSource” /> <property name=”transactionManager” ref=”transactionManager” /> <property name=”databaseSchemaUpdate” value=”true” /> <property name=”jpaEntityManagerFactory” ref=”entityManagerFactory” /> <property name=”jpaHandleTransaction” value=”true” /> <property name=”jpaCloseEntityManager” value=”true” /> <!– 任务调度器 –> <property name=”jobExecutorActivate” value=”true” /> <!– 配置邮件服务器 –> <property name=”mailServerHost” value=”exch07.wiseknit.com.cn”></property> <property name=”mailServerPort” value=”25″></property> </bean> <bean id=”processEngine” class=”org.activiti.spring.ProcessEngineFactoryBean”> <property name=”processEngineConfiguration” ref=”processEngineConfiguration” /> </bean> <!– activiti的引擎API –> <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=”identityService” factory-bean=”processEngine” factory-method=”getIdentityService” /> <bean id=”formService” factory-bean=”processEngine” factory-method=”getFormService” /> <!– 自动扫描并注入Spring Data JPA –> <jpa:repositories base-package=”com.weir.oa.dao” entity-manager-factory-ref=”entityManagerFactory” transaction-manager-ref=”transactionManager”> </jpa:repositories> </beans> 里面不懂的慢慢你就会明白不要着急, 这一步就完成了activiti与spring的整合。 下面说说jar包的问题,我的建议是导入activiti-explorer.war 里面的包 你会发现这里面已经包含了activiti与spring的所有需要的jar包,除了与你的项目冲突的spring的jar包都可以拿过来用,为什么导入这里的jar包还有一个原因是我们之后要整合网页版的流程设计器做好准备。 那么数据库表怎么导入呢? 如果你用的是hibernate或jpa那就简单了,当你启动项目时框架会自动去创建activiti的表结构,我们从<property name=“databaseSchemaUpdate” value=“true” />也可以看出来 这么一说如果是mybatis应该也可以,我没有试过不敢保证,实在不行不是还有activiti提供的表结构sql脚本嘛,直接导入数据库就ok了。 到现在为止你就可以启动你的项目看看是否有问题,数据库中的表是否已经有了, activiti就整合到你的项目去了。 剩下的问题就是我们怎么使用activiti工作流呀,怎么来实现我们的业务呢? 我想首先你应该明白一点的是工作流的开始第一步就是画图,画出你们的业务流程图,从开始然后流程交给谁去执行,流程有没有条件,满足不同的条件流程都交给谁处理,就这样把你们的业务画出流程图,那么这个地方我们就要遵守一定的规则就是BPMN。 所以说工作流画图很关键,画图就是设计你的业务,这当然是很关键的一步,我们用软件不就是来实现我们的业务么,然后我们动动手指头就把事情给办完了,要不然我们用系统干嘛对不对。