【Activiti工作流】5.Activiti入门程序HelloWorld演示流程的执行(上)

上一次我们在配置好Activiti的开发环境之后,进行了以下三步配置:
1.添加并制定配置文件
2.配置log4j.properties日志文件
3.重写加载类

我们的开发前的准备工作已经完毕,接下来我们来通过编写一个
入门工程--HelloWorld,来讲解Activiti的核心API的使用。

我们的HelloWrold工程是在于“模拟流程的执行”。

1.绘制流程图
我们需要绘制的流程图如下:


我们在之前的zhuCoder工程下面的src/main/resources下面的diagrams下面,
新建一个Activiti Diagram程序:




建立好之后就会发现右边编辑框直接打开了MyProcess,最右边有编辑工具:


先创建一个开始节点和结束节点:


然后建立一个任务:

打开参数视图,我们可以编辑每一个节点的详细情况


通过编写下面的参数,可以改变bpmn对应的xml的内容。
我们把刚刚那个节点的Name改为“提交申请”:


另外两个的任务节点的创建方式一样:


最后加连线:


我们最后要给每一个任务节点加“办理人”。办理人有“单人任务”、“组任务”等。
我们点击任务节点,在参数视图中选择Main Config,填写办理人:




然后我们点击空白处,在参数配置视图中,就是我们整个流程的配置,我们给它
指定Id和Name:


我们使用Ctrl+S对现在的bpmn文件进行保存的时候,可以看到生成了一个png文件:


我们对bpmn文件使用xml编辑模式打开,可以看到我们刚刚画出来的流程图的XML结构:



其中我们可以看到:
<process id="HelloWorld" name="HelloWorldProcess" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <endEvent id="endevent1" name="End"></endEvent>
    <userTask id="usertask1" name="提交申请" activiti:assignee="张三"></userTask>
    <userTask id="usertask2" name="审批【部门经理】" activiti:assignee="李四"></userTask>
    <userTask id="usertask3" name="审批【总经理】" activiti:assignee="王五"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="usertask3"></sequenceFlow>
    <sequenceFlow id="flow4" sourceRef="usertask3" targetRef="endevent1"></sequenceFlow>
  </process>
有一个开始开始节点和结束节点,还有三个任务,三个任务流向配置。
流程图已经画出来了,我们要开始开发了。


2.创建测试类
我们在/src/main/java下面创建cn.com.helloworld包,在下面创建一个名为
HelloWorld的类:


内容:
package cn.com.helloworld;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.junit.Test;

public class HelloWorld {
	
	//获取流程引擎对象
	//getDefaultProcessEngine方法内部会自动读取名为activiti.cfg.xml文件的配置信息
	ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
	
	/**部署流程定义*/
	@Test
	public void deploymentProcessDefinition(){
		//与流程定义和部署对象相关的Service
		RepositoryService repositoryService=processEngine.getRepositoryService();
		
		DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();//创建一个部署对象
		deploymentBuilder.name("helloWorld入门程序");//添加部署的名称
		deploymentBuilder.addClasspathResource("diagrams/MyProcess.bpmn");//从classpath的资源加载,一次只能加载一个文件
		deploymentBuilder.addClasspathResource("diagrams/MyProcess.png");//从classpath的资源加载,一次只能加载一个文件
		
		Deployment deployment=deploymentBuilder.deploy();//完成部署
		
		//打印我们的流程信息
		System.out.println("流程Id:"+deployment.getId());
		System.out.println("流程Name:"+deployment.getName());
	}
}

注:这里我们要将上一篇编写的“activiti-cfg.xml”更名为“activiti.cfg.xml”。因为之前使用createProcessEngineConfigurationFromResource方法加载自定义名称的配置文件,所以文件名可以随便定义,但是这里使用了getDefaultProcessEngine方法获取流程引擎对象processEngine,在源码中Activiti默认读取名为“activiti.cfg.xml”的资源文件,打开getDefaultProcessEngine方法的源码即可看到:



上面类中我们创建了流程引擎对象,并且拿到repositoryService,创建了一个部署对象,并且
通过部署对象加载了我们自己绘制的bpmn图,然后完成了部署。

结果:

既然我们完成了流程引擎的部署,其实上面的操作就是向数据库中保存了该流程
的所有信息。

我们查看一下数据库就不难发现,我们的流程数据已被存入数据库:






上篇完,请看下篇。

转载请注明出处:http://blog.csdn.net/acmman/article/details/58656378

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值