初学activiti(一)

来源:互联网 发布:淘宝上买男装什么牌子 编辑:程序博客网 时间:2024/06/15 14:03

对自己说:新年好!

年前看了几天的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");//任务发起人为kkRuntimeService runtimeService = processEngine.getRuntimeService();Map<String, Object> variableMap = new HashMap<String, Object>();ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variableMap);//获取TaskServiceProcessEngine 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

0 0
原创粉丝点击