在您好的应用程序中使用一个新的流程

流程处理 

(1)你需要建立一个知识库,其中包含过程定义


KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();         
kbuilder.add( ResourceFactory.newClassPathResource( "MyProcess.bpmn2" ),
ResourceType.BPMN2 );



  加入你的进程生成器(可以添加多个进程)后,您可以创建一个新的知识基础,这样的:


KnowledgeBase kbase = kbuilder.newKnowledgeBase();



  请注意,这将抛出一个异常,如果知识库包含错误(因为它不能正确地分析您的流程)。

(2)你需要创建一个会话,沟通与流程引擎和启动过程的启动过程。

启动过程:启动一个特定的进程,你会需要调用您的会话的startProcess方法,并传递您要启动的进程的ID。例如:


StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();         
ksession.startProcess( "com.sample.hello" );



startProcess方法的参数是需要启动的进程ID。当定义一个过程,这需要作为一个过程的财产(例如在Eclipse的属性视图显示,当您单击过程中的背景画布)指定进程ID。

当您启动的过程中,你可以指定额外的参数,用来传递额外的输入数据的过程中,使用startProcess(弦乐进程ID,地图参数)方法。额外的参数是一个名称 - 值对的集合。这些参数将被复制到新创建的进程实例的顶层变量的过程,所以他们可以在你的进程余下的直接访问。

数据

虽然流程图上指定的过程控制流的重点,它通常也有必要的过程,从数据的角度看。在整个执行过程中,数据可以检索,存储,传递和使用。

对于运行时的数据,存储在执行过程中中,过程变量都可以使用。变量是一个名称和一个数据类型定义。这可能是一个基本数据类型,如布尔,INT,或String,或任何Object的子类。变量可以定义一个变量的范围内。顶层的范围是过程本身的变量的范围。Subscopes可以定义使用一个子进程。子范围定义的变量只在该范围内的节点访问。

每当访问一个变量,这个进程将寻找合适的变量范围定义变量。变量作用域的嵌套是不允许的。节点总是会寻找其父容器中的一个变量。如果无法找到该变量,它会看,一个人的父容器,等等,直到达到流程实例本身。如果无法找到该变量,读访问产量空,写访问会产生错误消息,继续执行的过程。

变量可以用各种方式:

  • 流程级别的变量,可以设置启动时所提供的参数映射到thestartProcess方法调用一个过程。这些参数将作为进程范围的变量。
  • 脚本操作,只需直接使用在其脚本的本地参数变量的名称可以访问的变量。例如,如果程序定义了一个变量类型“org.jbpm.Person”的过程中,在这个过程中的脚本可以访问此直接:person.setAge(10);更改一个脚本中的变量的值可以通过知识背景下:kcontext