Activiti

Activiti简单demo,基于spring mvc

Dec 30, 2015 | | Say something

工程下载:test-activiti.zip, 解压密码:javacoder.cn 部署步骤: 1、配置applicationContext.xml中的mailServerUsername和mailServerPassword为你的邮箱用户名和密码 2、执行maven编译。生成war, 3、部署 4、用浏览器访问http://localhost:8080/test-activiti 该demo具有的功能 基于内存数据库h2,便于部署 配置了h2数据库的web控制台,路径为http://localhost:8043/ jdbcURL为jdbc:h2:mem:activiti 本demo基于报销场景,实现了文件的文件的上传 本demo用到的工作流知识有user task, mail task, 和exclusive gateway 任务的高亮 上传的文件从tomcat的根目录分离出来 在tomcat的server.xml的host节点下添加如下配置 <Context docBase=”E:/pic/upload” path=”/test-activiti/static/images”/> 如果你不想处理这个,修改相应的图片路径(将上传的文件直接放在”/test-activiti/static/images”目录下) activiti示例,能运行的,基于spring mvc

Activiti Mail Task

Dec 22, 2015 | | Say something

1、在流程定义中添加一个代表邮件任务的ServiceTask <serviceTask id=”mailtask1″ name=”Mail Task” activiti:type=”mail”> <extensionElements> <activiti:field name=”to”> <activiti:string><![CDATA[接受者邮箱]]></activiti:string> </activiti:field> <activiti:field name=”from”> <activiti:string><![CDATA[发送者邮箱]]></activiti:string> </activiti:field> <activiti:field name=”subject”> <activiti:string><![CDATA[主题]]></activiti:string> </activiti:field> <activiti:field name=”cc”> <activiti:string><![CDATA[抄送人]]></activiti:string> </activiti:field> <activiti:field name=”html”> <activiti:expression><![CDATA[ 邮件内容 ]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> 注意需要将<![CDATA[]]>中的内容换成实际的信息。当然这些信息可以再Activiti的Properties view中可视化配置 2、processEngineConfiguration中添加邮箱服务器相关的信息 <bean id=”processEngineConfiguration” class=”org.activiti.spring.SpringProcessEngineConfiguration”> <…..> <property name=”mailServerHost” value=”smtp.126.com” /> <property name=”mailServerUsername” value=”邮箱用户名” /> <property name=”mailServerPassword” value=”邮箱密码” /> </bean> serviceTask中配置的是发送者是用户显示的,processEngineConfiguration中配置的才是用于认证的。

Activiti Timer Start Event

Dec 22, 2015 | | Say something

确保processEngineConfiguration.jobExecutorActivate=true或者没有配置,因为这个配置项的默认值为true 将开始事件转换为Timer Start Event。本例使用使用timeCycle配置一分钟执行一次,共四次,本例也添加了一个executionListener来捕获该事件 <startEvent id=”timerstartevent1″ name=”Start”> <extensionElements> <activiti:executionListener event=”start” class=”cn.javacoder.test.activiti.MyListener”></activiti:executionListener> </extensionElements> <timerEventDefinition> <timeCycle>R4/PT1M</timeCycle> </timerEventDefinition> </startEvent> 当然我们也可以配置自己的JobExecutor,如下: <!– spring task executor –> <bean id=”taskExecutor” class=”org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor”> <property name=”maxPoolSize” value=”5″/> <property name=”keepAliveSeconds” value=”30″ /> </bean> <bean id=”jobExecutor” class=”org.activiti.spring.SpringJobExecutor”> <constructor-arg ref=”taskExecutor”/> </bean> <bean id=”processEngineConfiguration” class=”org.activiti.spring.SpringProcessEngineConfiguration”> <……> <property name=”jobExecutorActivate” value=”true” /> <property name=”jobExecutor” ref=”jobExecutor” /> </bean> 5.17.0版本引入了AsyncExecutor,和原来的JobExecutor最大的区别是一次查询出多个带执行的job,减少数据库的操作,当这个job是排他的(exclusive),会锁住整个流程实例(process instance),配置可以参考User Guide. […more]