当前位置: 首页 > news >正文

澄迈网站建设网络外包运营公司

澄迈网站建设,网络外包运营公司,招聘网站比对表怎么做,做网站好的最新的流程实例 -- ByKey 下面是为流程定义启动一个新的流程实例的最简单也是 最常用的方法: ProcessInstance processInstance executionService.startProcessInstanceByKey("ICL"); 上面service的方法会去查找 key为ICL的最新版本的流程定义&#xff0…

最新的流程实例 -- ByKey
下面是为流程定义启动一个新的流程实例的最简单也是 最常用的方法:

ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");

上面service的方法会去查找 key为ICL的最新版本的流程定义, 然后在最新的流程定义里启动流程实例。

当key为ICL的流程部署了一个新版本, startProcessInstanceByKey方法会自动切换到最新部署的版本。

原来已经启动的流程,还是按照启动时刻的版本执行。


指定流程版本 -- ById
换句话说,你如果想根据特定的版本启动流程实例, 便可以使用流程定义的id启动流程实例。如下所示:

ProcessInstance processInstance = executionService.startProcessInstanceById("ICL-1");


使用key

我们可以为新启动的流程实例分配一个key(注意: 这个key不是process的key,而是启动的instance的key ),这个key是用户执行的时候定义的,有时它会作为“业务key”引用。一个业务key必须在流程定义的所有版本范围内是唯一的。通常很容易在业务流程领域找到这种key。比如,一个订单id或者一个保险单号。
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", "CL92837");

// 2个参数:
//  第一个参数processkey,通过这个key启动process的一个实例
//  第二个参数为这里所说的实例key(instance key)

key可以用来创建流程实例的id,格式为{process-key}.{execution-id}。所以上面的代码会创建一个id为 ICL.CL92837的流向(execution)。

如果没有提供用户定义的key,数据库就会把主键作为key。 这样可以使用如下方式获得id:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");
String pid = processInstance.getId();

最好使用一个用户定义的key特别在你的应用代码中,找到这样的key并不困难。提供给一个用户定义的key,你可以组合流向的id,而不是执行一个基于流程变量的搜索 - 那种方式太消耗资源了。

使用变量

当一个新的流程实例启动时就会提供一组对象参数。 将这些参数放在variables变量里, 然后可以在流程实例创建和启动时使用。
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("customer", "John Doe");
variables.put("type", "Accident");
variables.put("amount", new Float(763.74));

ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", variables);

启动instance

启动instance,必须要知道processdefinition的信息:processdefinition可以通过2种方式获取:
ByKey:通过ProcessKey,启动该Process的最新版本
ById:  通过Process的ID,启动该Process的特定的版本

其他的参数,其余还可以在启动Instance的时候,给流程2个参数:
InstanceKey:这个instanceKey必须在整个流程定义的所有范围版本中唯一,如果用户不给于提供,系统也会自己生成;
一个Map<String, ?>表:启动流程时候给予的变量信息

执行等待的流向

当使用一个state 活动时,执行(或流程实例)会在到达state的时候进行等待,直到一个signal (也叫外部触发器)出现。 signalExecution方法可以被用作这种情况。执行通过一个执行id (字符串)来引用。

在一些情况下,到达state的执行会是流程实例本身。但是这不是一直会出现的情况。在定时器和同步的情况,流程是执行树形的根节点。所以我们必须确认你的signal作用在正确的流程路径上。

获得正确的执行的比较好的方法是给state活动分配一个事件监听器,像这样:
<state name="wait"> 
  <on event="start"> 
    <event-listener class="org.jbpm.examples.StartExternalWork" /> 
  </on> 
  ... 
</state> 

在事件监听器StartExternalWork 中,你可以执行那些需要额外完成的部分。在这个事件监听器里,你也可以通过execution.getId() 获得确切的流程id。那个流程id,在额外的工作完成后,你会需要它来提供给signal操作的:

executionService.signalExecutionById(executionId); 

这里有一个可选的(不是太推荐的)方式,来获得流程id,当流程到达state 活动的时候。只可能通过这种方式获得执行id,如果你知道哪个JBPM API调用了之后,流程会进入state 活动:

// assume that we know that after the next call 
// the process instance will arrive in state external work 
ProcessInstance processInstance = executionService.startProcessInstanceById(processDefinitionId); 

// or ProcessInstance processInstance = 
//  executionService.signalProcessInstanceById(executionId); 
Execution execution = processInstance.findActiveExecutionIn("external work"); 
String executionId = execution.getId(); 

转载于:https://www.cnblogs.com/minideas/archive/2011/04/20/2021995.html

http://www.lbrq.cn/news/2626615.html

相关文章:

  • 一流 北京网站建设网页制作步骤
  • 长春建站模板搭建百度 营销怎么收费
  • 济宁网站建设神华科技百度搜索排名优化
  • 坪山网站建设重大新闻事件2023
  • 武威网页设计培训学校百度推广优化排名怎么收费
  • 阜创汇网站建设名额最新国际新闻头条今日国际大事件
  • 网站编程工具可以免费领取会员的软件
  • 网站做附近地图导航深圳百度seo整站
  • 哪些网站有web做竞价排名
  • 运城建设银行网站点附近电脑培训速成班一个月
  • 大连科技网站制作小说网站排名免费
  • 安平县哪家做网站友情链接交换条件
  • 跨境电商单页网站的详情页怎么做的淘宝店铺推广
  • 医院网站制作设计推广产品的方法
  • 上海网站建设企b2b免费外链发布
  • 免费的小网站免费自己建网页
  • asp.net企业网站设计seo人员工作内容
  • 网站导航怎么做外链武汉seo管理
  • 做企业网站公司做推广
  • 霞山手机网站建设公司中国刚刚发生的新闻
  • 虚拟机怎么做多个网站百度seo插件
  • 外贸有哪些网站西安网站制作
  • ps做网站首页怎么国际新闻 军事
  • 云匠网要交钱才能用吗广州aso优化公司 有限公司
  • 阿里巴巴的网站应该怎么做北京营销型网站
  • alipay域名网站什么是搜索引擎优化seo
  • 可以做动态图表的网站百度官方网站
  • 车辆保险网站无货源电商怎么做
  • 计算机培训班有哪些湖北seo关键词排名优化软件
  • 广告设计制作方案seo服务商技术好的公司
  • 音视频时间戳获取与同步原理详解
  • 物联网架构全解析:华为“1+2+1”与格行随身WiFi,技术如何定义未来生活?
  • 排序算法(二)
  • 当前主流GPU全景讲解:架构、功能与应用方向
  • RN项目环境搭建和使用-Mac版本(模拟器启动不起来的排查)
  • 技术与情感交织的一生 (十一)