初学activiti(一)

对自己说:新年好!

年前看了几天的activiti工作流引擎,开始听到老大叫我看看时,比较蛋定,想着在网上查查资料应该问题不大,之后我就蒙圈了,感觉资料好少。

开始:

搜到了activiti中文api,下载了源码包,照着上面的操作了一下,把war包放到tomcat下面,能跑起来,但是不知道是啥,用eclipse跑了一个请假的小demo,首先研究的是流程图,要画流程图,还得安装相应的插件,不知道idea上如何操作,没弄成功,所以还是用eclispe。在界面上画好流程图,保存成文件后,以xml的格式打开,可以将其中的各个属性代码与界面对应起来:

StartEvent——任务开始

UserTask——用户任务节点,General中有id和name属性,id不变,name定义为该节点的中文名字;Main config中Assignee表示该节点的拥有者,groups表示该节点所属的分组

Endevent——任务结束


创建任务:

//加载配置文件
ProcessEngine processEngine = ProcessEngineConfiguration
		.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();

//部署提供的所有来源的Activiti引擎。
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment().addInputStream("helloworld.bpmn20.xml",
		new FileInputStream(filename)).deploy();

//设置流程发起用户信息,并创建任务流程
IdentityService identityService = processEngine.getIdentityService();
identityService.setAuthenticatedUserId("kk");//任务发起人为kk

RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String, Object> variableMap = new HashMap<String, Object>();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variableMap);

//获取TaskService
ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
TaskService ts=engine.getTaskService();

流程引擎的数据时保存在数据库中的,默认为h2数据库,如果想换成自己的数据库,比如mysql,可以在配置文件中修改

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"   destroy-method="close">  
	    <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
	    <property name="url" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=UTF8" />  
	    <property name="username" value="root" />  
		<property name="password" value="123456" />  
	</bean>
在配置processEngineConfiguration的时候注入dataSource就可以了,这样可以清楚的看到数据库中的数据是怎么处理的


初级使用:

TaskService.createTaskQuery().taskAssignee("张三").count()//查询某个人的任务,对应Main config中Assignee
TaskService.createTaskQuery().taskCandidateGroup("小组长").count()//查询某个组的任务,对应Main config中groups
TaskService.claim(t.getId(), "张三");//claim签收功能去指定受理人"张三"
TaskService.complete(t.getId());//完成某个任务节点,参数为任务id

猜你喜欢

转载自blog.csdn.net/u012602046/article/details/54728993
今日推荐