jbpm工作流,如何以编程方式部署jBPM工作流
各位老铁们好,相信很多人对jbpm工作流都不是特别的了解,因此呢,今天就来为大家分享下关于jbpm工作流以及如何以编程方式部署jBPM工作流的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
如何以编程方式部署jBPM工作流
您好,很高兴为您解答。
一、Ant文件发布方式
二、Eclipse图形设计器直接部署
三、编程方式部署Jbpm业务程序
编程方式部署Jbpm工作流定义
一、基本知识
1,JUnit测试和执行main方法,实际上是classpath目标目录下的.class文件的运行。查找资源文件,也是从classpath开始的。
2,我们的Web项目应用程序,classpath是web-inf/classes。我们的业务程序定义文件所在目录processes设为src目录。所以,路径应该是“业务程序定义名字/processdefinition.xml”。
这里,我的业务程序定义的名字是checkShowNews,所以classpath的路径应该是checkShowNews/processdefinition.xml。
二、部署业务程序定义的工具类
下面是这个类的源文件,可以通过Main方法和Junit测试部署业务程序定义。
以下是引用片段:
/**
*
*/
packagecom.withub.common.util;
importorg.jbpm.JbpmConfiguration;
importorg.jbpm.JbpmContext;
importorg.jbpm.graph.def.ProcessDefinition;
importjunit.framework.TestCase;
/**
*@author沈东良shendl_s@hotmail.com
*7:21:19PM
*DeployJbpmProcessDefinition类,提供了部署JBpm工作流定义到数据库的功能!
*/
publicclassDeployJbpmProcessDefinitionextendsTestCase{
staticJbpmConfigurationjbpmConfiguration=null;
static{
jbpmConfiguration=JbpmConfiguration.getInstance();
}
publicvoidsetUp(){
//创建数据库表
//jbpmConfiguration.createSchema();
}
publicvoidtearDown(){
//删除数据库表
//jbpmConfiguration.dropSchema();
}
/**
*测试方法
*
*/
publicvoidtestSimplePersistence(){
//Betweenthe3methodcallsbelow,alldataispassedviathe
//database.Here,inthisunittest,these3methodsareexecuted
//rightaftereachotherbecausewewanttotestacompleteprocess
//scenario情节.Butinreality,thesemethodsrepresentdifferent
//requeststoaserver.
//Sincewestartwithaclean,emptyin-memorydatabase,wehaveto
//deploytheprocessfirst.Inreality,thisisdoneoncebythe
//processdeveloper.
/**
*这个方法把业务处理定义通过Hibernate保存到数据库中。
*/
deployProcessDefinition("checkShowNews/processdefinition.xml");
}
/*
<process-definition
xmlns=""name="checkShowNews">
<swimlanename="CheckNewsManagers">
<assignmentclass="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.CheckNewsAssignmentHandler"config-type="bean"></assignment>
</swimlane>
<swimlanename="EditNewsUser">
<assignmentclass="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.EditNewsAssignmentHandler"config-type="bean"></assignment>
</swimlane>
<start-statename="relatingNewsChannel">
<transitionname=""to="checkNews"></transition>
</start-state>
<task-nodename="checkNews">
<taskname="checkNews"swimlane="CheckNewsManagers"></task>
<transitionname="rejected"to="editNews"></transition>
<transitionname="passed"to="showNews"></transition>
</task-node>
<end-statename="end"></end-state>
<task-nodename="editNews">
<taskname="editNews"swimlane="EditNewsUser"></task>
<transitionname="commited"to="checkNews"></transition>
</task-node>
<nodename="showNews">
<actionname="showNewsAction"class="com.withub.wcms.manage.publishNews.jbpmHandler.actionHandler.ShowNews"config-type="bean"/>
<transitionname=""to="end"></transition>
</node>
</process-definition>
*/
/**
*"checkShowNews/processdefinition.xml"
*/
publicvoiddeployProcessDefinition(StringfilePath){
//Thistestshowsaprocessdefinitionandoneexecution
//oftheprocessdefinition.Theprocessdefinitionhas
//3nodes:anunnamedstart-state,astate's'andan
//end-statenamed'end'.
ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlResource(filePath);
//Lookupthepojopersistencecontext-builderthatisconfiguredabove
JbpmContextjbpmContext=jbpmConfiguration.createJbpmContext();
try{
//Deploytheprocessdefinitioninthedatabase
jbpmContext.deployProcessDefinition(processDefinition);
}finally{
//Teardownthepojopersistencecontext.
//ThisincludesflushtheSQLforinsertingtheprocessdefinition
//tothedatabase.
/*
*关闭jbpm上下文。删除pojo持久化上下文。
*这包括刷新SQL来真正的把业务处理定义插入到数据库中。
**/
jbpmContext.close();
}
}
/**
*
*@paramargs
*/
publicstaticvoidmain(String[]args){
DeployJbpmProcessDefinitioninstance=newDeployJbpmProcessDefinition();
instance.deployProcessDefinition(args[0]);
}
}
三、Eclipse下使用main测试的方法
1,点击Run选项:
2,选中Main方法测试的
1)项目-----需要classpath,所有的.class文件、jar包和资源文件所在地。
2)main方法所在的类。
3,由于我们的main方法使用了一个参数,所以需要提供一个参数。就是jBPM业务程序定义文件相对于项目的classpath的相对路径。
4,点Run,运行
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~O(∩_∩)O~
工作流和BPM的区别
工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是抄对工作流程及其各操作步骤之间业务规则的抽象、百概括描述;
BPM,即业务流程管理,是一种以规范化的构造端到端度的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。是一个软件工具(来自天翎)
activiti和jbpm工作流引擎哪个比较好
Activiti5与jbpm4,底层都是使用流程虚拟机(PVM),而jbpm5以后则使用Drools Flow作为底层架构,目前Activiti6上市,同样也已经移除了PVM。技术只适不适合,并没有好坏之分,Activiti与jbpm均支持BPMN规范,jbpm与JBoss的项目整合使用的话,具有先天的优势,在这点看来,使用jbpmn更好。而jbpm采用的是LGPL开源协议,Activiti采用了宽松的Apache License2.0协议,从开源的角度来说,使用Activiti更好。参考自《疯狂工作流讲义第2版(Activiti6)》第1章。
文章到此结束,如果本次分享的jbpm工作流和如何以编程方式部署jBPM工作流的问题解决了您的问题,那么我们由衷的感到高兴!