上一次我们在配置好Activiti的开发环境之后,进行了以下三步配置:
1.添加并制定配置文件
2.配置log4j.properties日志文件
3.重写加载类
我们的开发前的准备工作已经完毕,接下来我们来通过编写一个
入门工程--HelloWorld,来讲解Activiti的核心API的使用。
我们的HelloWrold工程是在于“模拟流程的执行”。
1.绘制流程图
我们需要绘制的流程图如下:
我们在之前的zhuCoder工程下面的src/main/resources下面的diagrams下面,
新建一个Activiti Diagram程序:
建立好之后就会发现右边编辑框直接打开了MyProcess,最右边有编辑工具:
先创建一个开始节点和结束节点:
然后建立一个任务:
打开参数视图,我们可以编辑每一个节点的详细情况
我们把刚刚那个节点的Name改为“提交申请”:
另外两个的任务节点的创建方式一样:
最后加连线:
我们最后要给每一个任务节点加“办理人”。办理人有“单人任务”、“组任务”等。
我们点击任务节点,在参数视图中选择Main Config,填写办理人:
然后我们点击空白处,在参数配置视图中,就是我们整个流程的配置,我们给它
指定Id和Name:
我们使用Ctrl+S对现在的bpmn文件进行保存的时候,可以看到生成了一个png文件:
我们对bpmn文件使用xml编辑模式打开,可以看到我们刚刚画出来的流程图的XML结构:
其中我们可以看到:
流程图已经画出来了,我们要开始开发了。
2.创建测试类
我们在/src/main/java下面创建cn.com.helloworld包,在下面创建一个名为
HelloWorld的类:
内容:
上面类中我们创建了流程引擎对象,并且拿到repositoryService,创建了一个部署对象,并且
通过部署对象加载了我们自己绘制的bpmn图,然后完成了部署。
结果:
既然我们完成了流程引擎的部署,其实上面的操作就是向数据库中保存了该流程
的所有信息。
我们查看一下数据库就不难发现,我们的流程数据已被存入数据库:
1.添加并制定配置文件
2.配置log4j.properties日志文件
3.重写加载类
我们的开发前的准备工作已经完毕,接下来我们来通过编写一个
入门工程--HelloWorld,来讲解Activiti的核心API的使用。
我们的HelloWrold工程是在于“模拟流程的执行”。
1.绘制流程图
我们需要绘制的流程图如下:
我们在之前的zhuCoder工程下面的src/main/resources下面的diagrams下面,
新建一个Activiti Diagram程序:
建立好之后就会发现右边编辑框直接打开了MyProcess,最右边有编辑工具:
先创建一个开始节点和结束节点:
然后建立一个任务:
打开参数视图,我们可以编辑每一个节点的详细情况
我们把刚刚那个节点的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