activiti事件网关 complete localscope 网关条件变量没有

怎么实现Activiti的分支条件的自定义配置 - 软件架构设计当前位置:& &&&怎么实现Activiti的分支条件的自定义配置怎么实现Activiti的分支条件的自定义配置&&网友分享于:&&浏览:0次如何实现Activiti的分支条件的自定义配置
一、Activiti的流程分支条件的局限
Activiti的流程分支条件目前是采用脚本判断方式,并且需要在流程定义中进行分支条件的设定,如下图所示:
&sequenceFlow id="flow2" sourceRef="exclusiveGw" targetRef="theTask1"&
&conditionExpression xsi:type="tFormalExpression"&${input == 1}&/conditionExpression&
&/sequenceFlow&
&sequenceFlow id="flow3" sourceRef="exclusiveGw" targetRef="theTask2"&
&conditionExpression xsi:type="tFormalExpression"&${input == 2}&/conditionExpression&
&/sequenceFlow&
&sequenceFlow id="flow4" sourceRef="exclusiveGw" targetRef="theTask3"&
&conditionExpression xsi:type="tFormalExpression"&${input == 3}&/conditionExpression&
&/sequenceFlow&
从上面的定义可以看到,流程的分支条件存在以下两个致命的局限性:
1.分支条件需要在流程定义(XML)中设定,这要求流程定义必须由开发人员来设计及编写
2.分支条件比较简单,一般为boolean表达式,表达式里的为单变量的判断处理。
以上两个局限性限制了流程的分支判断处理必须由开发人员来设定,而国内的大部分的流程应用都要求是普通的业务人员即可处理,或者是由有一定计算机基础的人员来设置处理。这要求我们对流程的条件设置提出了更高的要求,上一节我们通过修改Activiti的流程定义的XML中的分支条件表达式,同时刷新流程定义的引擎缓存,如下的代码就是基于这种方式:
JsonNode jsonObject=objectMapper.readTree(configJson);
JsonNode configsNode=jsonObject.get("configs");
BpmSolution bpmSolution=bpmSolutionManager.get(solId);
BpmDef bpmDef=bpmDefManager.getLatestBpmByKey(bpmSolution.getDefKey(), ContextUtil.getCurrentTenantId());
ActProcessDef processDef=actRepService.getProcessDef(bpmDef.getActDefId());
String processDefXml=actRepService.getBpmnXmlByDeployId(bpmDef.getActDepId());
System.out.println("xml:"+processDefXml);
ActNodeDef sourceNode=processDef.getNodesMap().get(nodeId);
ByteArrayInputStream is=new ByteArrayInputStream(processDefXml.getBytes());
Map&String,String& map = new HashMap&String,String&();
map.put("bpm","http://www.omg.org/spec/BPMN//MODEL");
map.put("xsi","http://www.omg.org/spec/BPMN//MODEL");
SAXReader saxReader = new SAXReader();
saxReader.getDocumentFactory().setXPathNamespaceURIs(map);
Document doc = saxReader.read(is);
//Document doc=Dom4jUtil.load(is, "UTF-8");
Element rootEl=doc.getRootElement();
if(configsNode!=null){
//取得分支条件列表
JsonNode configs=configsNode.get("conditions");
if(configs!=null){
Iterator&JsonNode& it=configs.elements();
while(it.hasNext()){
ObjectNode config=(ObjectNode)it.next();
String tmpNodeId=config.get("nodeId").textValue();
String tmpCondition=config.get("condition").textValue();
Element seqFlow=(Element)rootEl.selectSingleNode("/bpm:definitions/bpm:process/bpm:sequenceFlow[@sourceRef='"
+sourceNode.getNodeId()+"' and @targetRef='"+tmpNodeId+"']");
if(seqFlow==null)
Element conditionExpress=(Element)seqFlow.selectSingleNode("bpm:conditionExpression");
if(conditionExpress==null){
conditionExpress=seqFlow.addElement("conditionExpression");
conditionExpress.addAttribute("xsi:type", "tFormalExpression");
conditionExpress.clearContent();
conditionExpress.addCDATA(tmpCondition);
//修改流程定义的XML,并且清空该流程定义的缓存
actRepService.doModifyXmlAndClearCache(bpmDef.getActDefId(),bpmDef.getActDepId(), doc.asXML());
1.基于这种方式容易出错,因为流程的分支条件写回流程定义的XML是比较容易出问题的,同时不清楚人员填写什么条件回XML文件中。
2.对于Jsaas中的一个流程定义可用于多个流程解决方案中使用配置不同的条件不太适合,因为一个流程定义是一样,但可能会分支的条件设置不一样。
基于以上的要求,为此我们对Activiti进行扩展,以使得我们可以允许流程引擎在分支判断处理中,执行我们的条件设置,其原理如下:
当流程引擎跳至分支条件判断处理时,可以让它执行我们的脚本设置条件,条件满足时,则跳至我们的设置的目标节点,从而实现干预流程引擎本身的执行方式,为了不影响Activiti的原的运行机制,我们还是保留其旧的执行判断方式。
二、Activiti的扩展点
Activiti的流程扩展是比较灵活的,我们通过改写这个ExclusiveGateway的节点的行为方法即可,其实现方法如下:
package com.redxun.bpm.activiti.
import java.util.I
import javax.annotation.R
import org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityB
import org.activiti.engine.impl.pvm.PvmT
import org.activiti.engine.impl.pvm.delegate.ActivityE
import mons.lang.StringU
import org.slf4j.L
import org.slf4j.LoggerF
import com.redxun.bpm.core.entity.config.ExclusiveGatewayC
import com.redxun.bpm.core.entity.config.NodeExecuteS
import com.redxun.bpm.core.manager.BpmNodeSetM
import com.redxun.core.script.GroovyE
import com.sun.star.uno.RuntimeE
* 对网关的条件判断,优先使用扩展的配置
* @author keitch
@SuppressWarnings("serial")
public class ExclusiveGatewayActivityBehaviorExt extends ExclusiveGatewayActivityBehavior{
protected static Logger log = LoggerFactory.getLogger(ExclusiveGatewayActivityBehaviorExt.class);
//节点的设置管理器
BpmNodeSetManager bpmNodeSetM
//脚本引擎
@Resource GroovyEngine groovyE
protected void leave(ActivityExecution execution) {
log.debug("enter ExclusiveGatewayActivityBehaviorExt=======================");
if (log.isDebugEnabled()) {
log.debug("Leaving activity '{}'", execution.getActivity().getId());
String solId=(String)execution.getVariable("solId");
String nodeId=execution.getActivity().getId();
log.debug("solid is {} and nodeId is {}",solId,nodeId);
if(StringUtils.isNotEmpty(solId)&& StringUtils.isNotBlank(nodeId)){
ExclusiveGatewayConfig configs=bpmNodeSetManager.getExclusiveGatewayConfig(solId, nodeId);
for(NodeExecuteScript script:configs.getConditions()){
String destNodeId=script.getNodeId();
String condition=script.getCondition();
log.debug("dest node:{}, condition is {}",destNodeId,condition);
//执行脚本引擎
Object boolVal=groovyEngine.executeScripts(condition, execution.getVariables());
if(boolVal instanceof Boolean){
Boolean returnVal=(Boolean)boolV//符合条件
if(returnVal==true){
//找到符合条件的目标节点并且进行跳转
Iterator&PvmTransition& transitionIterator = execution.getActivity().getOutgoingTransitions().iterator();
while (transitionIterator.hasNext()) {
PvmTransition seqFlow = transitionIterator.next();
if(destNodeId.equals(seqFlow.getDestination().getId())){
execution.take(seqFlow);
throw new RuntimeException("表达式:\n "+condition+"\n返回值不为布尔值(true or false)");
//执行父类的写法,以使其还是可以支持旧式的在跳出线上写条件的做法
super.leave(execution);
我们通过继续改写了这个分支节点的跳出机制,并且通过脚本引擎来执行其条件分支的判断处理,但流程引擎并不了解我们扩展的类,这时我们需要配置Activiti流程引擎的行为动作工厂类,如下所示:
package com.redxun.bpm.activiti.
import org.activiti.bpmn.model.ExclusiveG
import org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityB
import org.activiti.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorF
* 扩展缺省的流程节点默认工厂类,实现对Activiti节点的执行的默认行为的更改
* @author keitch
public class ActivityBehaviorFactoryExt extends DefaultActivityBehaviorFactory {
private ExclusiveGatewayActivityBehaviorExt exclusiveGatewayActivityBehaviorE
* 通过Spring容器注入新的分支条件行为执行类
* @param exclusiveGatewayActivityBehaviorExt
public void setExclusiveGatewayActivityBehaviorExt(ExclusiveGatewayActivityBehaviorExt exclusiveGatewayActivityBehaviorExt) {
this.exclusiveGatewayActivityBehaviorExt = exclusiveGatewayActivityBehaviorE
//重写父类中的分支条件行为执行类
public ExclusiveGatewayActivityBehavior createExclusiveGatewayActivityBehavior(ExclusiveGateway exclusiveGateway) {
return exclusiveGatewayActivityBehaviorE
三、Activiti的Spring配置的更改
在Activiti的流程引擎配置中加入新的流程行为动作执行工厂类。配置如下所示,注意activityBehaviorFactory的属性配置:
&bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"&
&property name="dataSource" ref="dataSource" /&
&property name="transactionManager" ref="transactionManager" /&
&property name="databaseSchemaUpdate" value="true" /&
&property name="jobExecutorActivate" value="false" /&
&property name="enableDatabaseEventLogging" value="false" /&
&property name="databaseType" value="${db.type}" /&
&property name="idGenerator" ref="actIdGenerator"/&
&property name="eventListeners"&
&ref bean="globalEventListener"/&
&/property&
&property name="activityFontName" value="宋体"/&
&property name="labelFontName" value="宋体"/&
&!-- 用于更改流程节点的执行行为 --&
&property name="activityBehaviorFactory" ref="activityBehaviorFactoryExt"/&
&bean id="activityBehaviorFactoryExt" class="com.redxun.bpm.activiti.ext.ActivityBehaviorFactoryExt"&
&property name="exclusiveGatewayActivityBehaviorExt" ref="exclusiveGatewayActivityBehaviorExt"/&
&bean id="exclusiveGatewayActivityBehaviorExt" class="com.redxun.bpm.activiti.ext.ExclusiveGatewayActivityBehaviorExt"/&
通过以上方式扩展后,节点的分支设置可以把条件表达式写成以下方式,同时条件存于流程定义的外部表中:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有jplogic之activiti modeler流程设计器集成案例(非spring集成)
jplogic之activiti modeler流程设计器集成案例(非spring集成)
[摘要:绝《jplogic之activiti整开案例(自界说流程引擎[非开源框架]待绝)》闭于activiti事情流引擎散成。因为现在activiti事情流引擎的用户群体相比较较多,本文先容jplogic闭于activiti之activiti]
续《jplogic之activiti整合案例(自定义流程引擎[非开源框架]待续)》关于activiti工作流引擎集成。由于目前activiti工作流引擎的用户群体相对比较多,本文介绍jplogic关于activiti之activiti
modeler模块集成。集成方式属于非spring集成,也就是说不需要在spring的环境下启动activiti了。欢迎大家进入群【<span style="color:#ff127】与我交流相关内容。
& & & & &凡是引擎类的框架我们在使用框架通过API之前都需要对框架进行必要的初始化!对于activiti也是如此!官方的对于activiti的项目集成说明都是“三大框架”基础上进行说明。也就是activiti根据spring bean规范提供相应的初始化bean,只需要将这些bean配置到spring的上下文配置文件即可!那么activiti的初始化工作就会随着spring的启动而初始化,这样我们就可以在项目通过spring注入的方式使用activiti给我们提供的API。那么我们就可以在这些API的基础之上进行工作流引擎的二次开发!现在大多数企业的工作流程产品都是基于这些开源工作流程引擎的二次开发!但是acitviti
modeler这个模块本身不依赖于spring,大家大可以通过手动初始化方式写进自己项目中,将项目使用到service bean注入到自己写的容器中!这些就可以不通过spring来管理相应的service bean ,所以也不需要添加spring的依赖spring!
& & & & 那么单独讲activiti modeler抽出来整合到自己的项目中就变得相当容易。不需要将activiti exploer整个一起集成到项目中!整合到项目中就可以很方面的运用流程引擎提供的网页流程设计器进行相应的业务流程模型的建模了!同时也修改和调整模型。设计好模型之后我们就可以将模型转化成相应的流程定义,当然也可以在项目中将流程实例与我们业务表单动态绑定(需要与表单设计器配合起来设计)起来!
& & & &关于activiti modeler流程设计器的集成步骤在社区都用,在这里就不多说了!因为activiti modeler不依赖spring,(有些相关文章中描述需要添加spring监听的说法是有误,本人在这里纠正一下)那么关于spring的集成步骤可以改成手工初始化的方式,相对简单在这里就不多说了!当然大伙也可以根据自己的需要自己制作一个符合acitiviti标准的流程设计器,现在网络之上已经有人在做这个东西!诸如Flex版、easyUI版的都用,根据自己项目需要用之即可。
下面是activiti modeler在集成效果图:
& & & &在这里再说几句,如果你觉得英文版的activiti modeler不够爽,那么你可以完全对activiti modeler进行汉化。汉化的方式也挺简单的,但是汉化过程要符合activiti的相关概念(下面是我对stencilset.json文件的汉化):
&title& : &BPMN 2.0标准工具&,
&namespace& : &http://b3mn.org/stencilset/bpmn2.0#&,
&description& : &This is the BPMN 2.0 stencil set specification.&,
&propertyPackages& : [ {
&name& : &elementbase&,
&properties& : [ {
&id& : &overrideid&,
&type& : &String&,
&title& : &Id&,
&value& : &&,
&description& : &唯一标识的元素&,
&popular& : true
&name& : &baseattributes&,
&properties& : [ {
&id& : &name&,
&type& : &String&,
&title& : &(名称)Name&,
&value& : &&,
&description& : &BPMN元素名称&,
&popular& : true,
&refToView& : &text_name&
&id& : &documentation&,
&type& : &Text&,
&title& : &(文档)Documentation&,
&value& : &&,
&description& : &BPMN元素描述&,
&popular& : true
&name& : &processbase&,
&properties& : [ {
&id& : &process_id&,
&type& : &String&,
&title& : &(流程名称)Process identifier&,
&value& : &process&,
&description& : &流程的特殊唯一的名称标识&,
&popular& : true
&id& : &process_author&,
&type& : &String&,
&title& : &(流程作者)Process author&,
&value& : &&,
&description& : &流程定义作者&,
&popular& : false
&id& : &process_executable&,
&type& : &Choice&,
&title& : &Executable&,
&value& : &Yes&,
&description& : &Define if the process is executable.&,
&popular& : true,
&items& : [ {
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &process_version&,
&type& : &String&,
&title& : &(流程版本)Process version string (documentation only)&,
&value& : &&,
&description& : &标识文档版本为目的&,
&popular& : false
&id& : &process_namespace&,
&type& : &String&,
&title& : &(目标命名空间)Target namespace&,
&value& : &http://www.activiti.org/processdef&,
&description& : &工作流目标命名空间&,
&popular& : false
&name& : &usertaskbase&,
&properties& : [ {
&id& : &formkeydefinition&,
&type& : &String&,
&title& : &(表单编号)Form key&,
&value& : &&,
&description& : &用户任务表单编号&,
&popular& : true
&id& : &duedatedefinition&,
&type& : &String&,
&title& : &(到期日期)Due date&,
&value& : &&,
&description& : &用户任务到期时间&,
&popular& : true
&id& : &prioritydefinition&,
&type& : &String&,
&title& : &(优先级)Priority&,
&value& : &&,
&description& : &用户任务优先级&,
&popular& : true
&name& : &usertaskassignment&,
&properties& : [ {
&id& : &usertaskassignment&,
&type& : &Complex&,
&title& : &(分配用户)Assignments&,
&value& : &&,
&description& : &分配任务给用户&,
&popular& : true,
&complexItems& : [ {
&id& : &assignment_type&,
&name& : &Type&,
&name_de& : &Typ&,
&type& : &Choice&,
&value& : &&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &c1&,
&title& : &(受理人)Assignee&,
&title_de& : &Performer&,
&value& : &assignee&,
&refToView& : &&
&id& : &c2&,
&title& : &(候选用户)Candidate users&,
&title_de& : &HumanPerformer&,
&value& : &candidateUsers&,
&refToView& : &&
&id& : &c3&,
&title& : &(候选用户组)Candidate groups&,
&title_de& : &PotentialOwner&,
&value& : &candidateGroups&,
&refToView& : &&
&id& : &resourceassignmentexpr&,
&name& : &(资源赋值表达式)Resource assignment expression&,
&name_de& : &Zuordnungs-Ausdruck&,
&type& : &String&,
&description& : &This defines the expression used for the resource assignment.&,
&description_de& : &Definiert den Ausdruck, der f?r die Zordung von Ressourcen genutzt wird.&,
&value& : &&,
&width& : 200,
&optional& : true
&name& : &formdefinition&,
&properties& : [ {
&id& : &formproperties&,
&type& : &multiplecomplex&,
&title& : &(表单属性)Form properties&,
&value& : &&,
&description& : &定义表单属性&,
&popular& : true,
&complexItems& : [ {
&id& : &formproperty_id&,
&name& : &Id&,
&name_de& : &Typ&,
&type& : &String&,
&description& : &This defines the expression used for the resource assignment.&,
&description_de& : &Definiert den Ausdruck, der f?r die Zordung von Ressourcen genutzt wird.&,
&value& : &&,
&width& : 150,
&optional& : false
&id& : &formproperty_name&,
&name& : &(名称)Name&,
&name_de& : &Typ&,
&type& : &String&,
&description& : &This defines the expression used for the resource assignment.&,
&description_de& : &Definiert den Ausdruck, der f?r die Zordung von Ressourcen genutzt wird.&,
&value& : &&,
&width& : 150,
&optional& : false
&id& : &formproperty_type&,
&name& : &(类型)Type&,
&name_de& : &Typ&,
&type& : &Choice&,
&value& : &&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &c1&,
&title& : &String&,
&title_de& : &String&,
&value& : &string&,
&refToView& : &&
&id& : &c2&,
&title& : &Date&,
&title_de& : &Date&,
&value& : &date&,
&refToView& : &&
&id& : &c3&,
&title& : &Long&,
&title_de& : &Long&,
&value& : &long&,
&refToView& : &&
&id& : &c4&,
&title& : &Boolean&,
&title_de& : &Boolean&,
&value& : &boolean&,
&refToView& : &&
&id& : &c5&,
&title& : &Enum&,
&title_de& : &Enum&,
&value& : &enum&,
&refToView& : &&
&id& : &formproperty_expression&,
&name& : &(表达式)Expression&,
&name_de& : &Typ&,
&type& : &String&,
&description& : &This defines the expression used for the resource assignment.&,
&description_de& : &Definiert den Ausdruck, der f?r die Zordung von Ressourcen genutzt wird.&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &formproperty_variable&,
&name& : &(变量)Variable&,
&name_de& : &Typ&,
&type& : &String&,
&description& : &This defines the expression used for the resource assignment.&,
&description_de& : &Definiert den Ausdruck, der f?r die Zordung von Ressourcen genutzt wird.&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &formproperty_required&,
&name& : &Required&,
&name_de& : &Typ&,
&type& : &Choice&,
&value& : &No&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &formproperty_readable&,
&name& : &Readable&,
&name_de& : &Typ&,
&type& : &Choice&,
&value& : &Yes&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &formproperty_writeable&,
&name& : &Writeable&,
&name_de& : &Typ&,
&type& : &Choice&,
&value& : &Yes&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &formproperty_formvalues&,
&name& : &Form values&,
&name_de& : &Typ&,
&type& : &Complex&,
&width& : 300,
&optional& : false,
&complexItems& : [ {
&id& : &formproperty_formvalue_id&,
&name& : &Id&,
&type& : &String&,
&value& : &&,
&width& : 100,
&optional& : false
&id& : &formproperty_formvalue_name&,
&name& : &Name&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&name& : &tasklistenersbase&,
&properties& : [ {
&id& : &tasklisteners&,
&type& : &multiplecomplex&,
&title& : &(任务监听器)Task listeners&,
&value& : &&,
&description& : &监听用户任务&,
&popular& : true,
&complexItems& : [ {
&id& : &task_listener_event_type&,
&name& : &(事件)Event&,
&type& : &Choice&,
&value& : &&,
&width& : 100,
&optional& : false,
&items& : [ {
&id& : &c1&,
&title& : &Create&,
&value& : &create&,
&refToView& : &&
&id& : &c2&,
&title& : &Assignment&,
&value& : &assignment&,
&refToView& : &&
&id& : &c3&,
&title& : &Complete&,
&value& : &complete&,
&refToView& : &&
&id& : &c4&,
&title& : &All Events&,
&value& : &all&,
&refToView& : &&
&id& : &task_listener_class&,
&name& : &(监听类)Class&,
&type& : &String&,
&description& : &Listener class.&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &task_listener_expression&,
&name& : &(监听器表达式)Expression&,
&type& : &String&,
&description& : &监听器表达式定义&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &task_listener_delegate_expression&,
&name& : &Delegate expression&,
&type& : &String&,
&description& : &Listener delegate expression definition.&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &task_listener_fields&,
&name& : &Fields&,
&type& : &Complex&,
&width& : 100,
&optional& : false,
&complexItems& : [ {
&id& : &task_listener_field_name&,
&name& : &Name&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &task_listener_field_value&,
&name& : &String value&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &task_listener_field_expression&,
&name& : &Expression&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&name& : &servicetaskbase&,
&properties& : [ {
&id& : &servicetaskclass&,
&type& : &String&,
&title& : &Class&,
&value& : &&,
&description& : &Class that implements the service task logic.&,
&popular& : true
&id& : &servicetaskexpression&,
&type& : &String&,
&title& : &Expression&,
&value& : &&,
&description& : &Service task logic defined with an expression.&,
&popular& : true
&id& : &servicetaskdelegateexpression&,
&type& : &String&,
&title& : &Delegate expression&,
&value& : &&,
&description& : &Service task logic defined with a delegate expression.&,
&popular& : true
&id& : &servicetaskresultvariable&,
&type& : &String&,
&title& : &Result variable name&,
&value& : &&,
&description& : &Process variable name to store the service task result.&,
&popular& : true
&id& : &servicetaskfields&,
&type& : &Complex&,
&title& : &Class fields&,
&value& : &&,
&description& : &Field extensions&,
&popular& : true,
&complexItems& : [ {
&id& : &servicetask_field_name&,
&name& : &Name&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &servicetask_field_value&,
&name& : &String value&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &servicetask_field_expression&,
&name& : &Expression&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&name& : &scripttaskbase&,
&properties& : [ {
&id& : &scriptformat&,
&type& : &String&,
&title& : &Script format&,
&value& : &&,
&description& : &Script format of the script task.&,
&popular& : true
&id& : &scripttext&,
&type& : &Text&,
&title& : &Script&,
&value& : &&,
&description& : &Script text of the script task.&,
&popular& : true
&name& : &ruletaskbase&,
&properties& : [ {
&id& : &ruletask_class&,
&type& : &String&,
&title& : &Class&,
&value& : &&,
&description& : &Class of the rule task.&,
&popular& : true
&id& : &ruletask_variables_input&,
&type& : &String&,
&title& : &Input variables&,
&value& : &&,
&description& : &Input variables of the rule task.&,
&popular& : true
&id& : &ruletask_result&,
&type& : &String&,
&title& : &Result variable&,
&value& : &&,
&description& : &Result variable of the rule task.&,
&popular& : true
&id& : &ruletask_rules&,
&type& : &String&,
&title& : &Rules&,
&value& : &&,
&description& : &Rules of the rule task.&,
&popular& : true
&id& : &ruletask_exclude&,
&type& : &Choice&,
&title& : &Exclude&,
&value& : &No&,
&description& : &Use the rules property as exclusion.&,
&popular& : true,
&items& : [ {
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&name& : &mailtaskbase&,
&properties& : [ {
&id& : &mailtaskto&,
&type& : &Text&,
&title& : &To&,
&value& : &&,
&description& : &The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.&,
&popular& : true
&id& : &mailtaskfrom&,
&type& : &Text&,
&title& : &From&,
&value& : &&,
&description& : &The sender e-mail address. If not provided, the default configured from address is used.&,
&popular& : true
&id& : &mailtasksubject&,
&type& : &Text&,
&title& : &Subject&,
&value& : &&,
&description& : &The subject of the e-mail.&,
&popular& : true
&id& : &mailtaskcc&,
&type& : &Text&,
&title& : &Cc&,
&value& : &&,
&description& : &The cc&#39;s of the e-mail. Multiple recipients are defined in a comma-separated list&,
&popular& : true
&id& : &mailtaskbcc&,
&type& : &Text&,
&title& : &Bcc&,
&value& : &&,
&description& : &The bcc&#39;s of the e-mail. Multiple recipients are defined in a comma-separated list&,
&popular& : true
&id& : &mailtasktext&,
&type& : &Text&,
&title& : &Text&,
&value& : &&,
&description& : &The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don&#39;t support rich content. The client will then fall back to this text-only alternative.&,
&popular& : true
&id& : &mailtaskhtml&,
&type& : &Text&,
&title& : &Html&,
&value& : &&,
&description& : &A piece of HTML that is the content of the e-mail.&,
&popular& : true
&id& : &mailtaskcharset&,
&type& : &String&,
&title& : &Charset&,
&value& : &&,
&description& : &Allows to change the charset of the email, which is necessary for many non-English languages. &,
&popular& : true
&name& : &callactivitybase&,
&properties& : [ {
&id& : &callactivitycalledelement&,
&type& : &String&,
&title& : &Called element&,
&value& : &&,
&description& : &Process reference.&,
&popular& : true
&id& : &callactivityinparameters&,
&type& : &Complex&,
&title& : &In parameters&,
&value& : &&,
&description& : &Definition of the input parameters&,
&popular& : true,
&complexItems& : [ {
&id& : &ioparameter_source&,
&name& : &Source&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &ioparameter_sourceexpression&,
&name& : &Source expression&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &ioparameter_target&,
&name& : &Target&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &callactivityoutparameters&,
&type& : &Complex&,
&title& : &Out parameters&,
&value& : &&,
&description& : &Definition of the output parameters&,
&popular& : true,
&complexItems& : [ {
&id& : &ioparameter_source&,
&name& : &Source&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &ioparameter_sourceexpression&,
&name& : &Source expression&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &ioparameter_target&,
&name& : &Target&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&name& : &sequenceflowbase&,
&properties& : [ {
&id& : &conditionsequenceflow&,
&type& : &Text&,
&title& : &Flow condition&,
&value& : &&,
&description& : &The condition of the sequence flow&,
&popular& : true
&id& : &defaultflow&,
&type& : &Choice&,
&title& : &Default flow&,
&value& : &None&,
&description& : &Define the sequence flow as default&,
&popular& : true,
&items& : [ {
&id& : &none&,
&title& : &Standard&,
&title_de& : &Standard&,
&value& : &None&
&id& : &default&,
&title& : &Default Flow&,
&title_de& : &Standardfluss&,
&value& : &Default&,
&icon& : &connector/list/type.default.png&,
&refToView& : &default&
&id& : &conditionalflow&,
&type& : &Choice&,
&title& : &Conditional flow&,
&value& : &None&,
&description& : &Define the sequence flow with a condition&,
&popular& : true,
&items& : [ {
&id& : &none&,
&title& : &Standard&,
&title_de& : &Standard&,
&value& : &None&
&id& : &default&,
&title& : &Conditional Flow&,
&value& : &Conditional&,
&icon& : &connector/list/type.expression.png&,
&refToView& : &conditional&
&name& : &cancelactivityattribute&,
&properties& : [ {
&id& : &cancelactivity&,
&type& : &Choice&,
&title& : &Cancel activity&,
&value& : &yes&,
&description& : &Define activity cancelation&,
&popular& : true,
&items& : [ {
&id& : &yes&,
&title& : &Yes&,
&title_de& : &Yes&,
&value& : &yes&
&id& : &no&,
&title& : &No&,
&title_de& : &No&,
&value& : &no&
&name& : &timerdefinition&,
&properties& : [ {
&id& : &timerdurationdefinition&,
&type& : &String&,
&title& : &Time duration (e.g. PT5M)&,
&value& : &&,
&description& : &Define the timer with a ISO-8601 duration.&,
&popular& : true
&id& : &timerdatedefinition&,
&type& : &String&,
&title& : &Time date in ISO-8601&,
&value& : &&,
&description& : &Define the timer with a ISO-8601 date definition.&,
&popular& : true
&id& : &timercycledefinition&,
&type& : &String&,
&title& : &Time cycle (e.g. R3/PT10H)&,
&value& : &&,
&description& : &Define the timer with a ISO-8601 cycle.&,
&popular& : true
&name& : &messagerefdefinition&,
&properties& : [ {
&id& : &messageref&,
&type& : &String&,
&title& : &Message reference&,
&value& : &&,
&description& : &Define the message name.&,
&popular& : true
&name& : &signalrefdefinition&,
&properties& : [ {
&id& : &signalref&,
&type& : &String&,
&title& : &Signal reference&,
&value& : &&,
&description& : &Define the signal name.&,
&popular& : true
&name& : &errorrefdefinition&,
&properties& : [ {
&id& : &errorref&,
&type& : &String&,
&title& : &Error reference&,
&value& : &&,
&description& : &Define the error name.&,
&popular& : true
&name& : &nonestarteventbase&,
&properties& : [ {
&id& : &initiator&,
&type& : &String&,
&title& : &Initiator&,
&value& : &&,
&description& : &Initiator of the process.&,
&popular& : true
&id& : &formkeydefinition&,
&type& : &String&,
&title& : &Form key&,
&value& : &&,
&description& : &Form key of the start event.&,
&popular& : true
&name& : &textannotationbase&,
&properties& : [ {
&id& : &text&,
&type& : &String&,
&title& : &Text&,
&value& : &&,
&description& : &The text of the text annotation.&,
&popular& : true,
&refToView& : &text&
&name& : &asynchronousbase&,
&properties& : [ {
&id& : &asynchronousdefinition&,
&type& : &Choice&,
&title& : &(异步任务)Asynchronous&,
&value& : &No&,
&description& : &定义为一个异步任务&,
&popular& : true,
&items& : [ {
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &exclusivedefinition&,
&type& : &Choice&,
&title& : &(互斥任务)Exclusive&,
&value& : &Yes&,
&description& : &定义为一个互斥任务&,
&popular& : true,
&items& : [ {
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&name& : &executionlistenersbase&,
&properties& : [ {
&id& : &executionlisteners&,
&type& : &multiplecomplex&,
&title& : &(执行监听器)Execution listeners&,
&value& : &&,
&description& : &Listeners for an activity, process, sequence flow, start and end event.&,
&popular& : true,
&complexItems& : [ {
&id& : &execution_listener_event_type&,
&name& : &Event&,
&type& : &Choice&,
&value& : &&,
&width& : 200,
&optional& : false,
&items& : [ {
&id& : &c1&,
&title& : &Start&,
&value& : &start&,
&refToView& : &&
&id& : &c2&,
&title& : &End&,
&value& : &end&,
&refToView& : &&
&id& : &c2&,
&title& : &Take (only sequence flows)&,
&value& : &take&,
&refToView& : &&
&id& : &execution_listener_class&,
&name& : &(类)Class&,
&type& : &String&,
&description& : &Listener class.&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &execution_listener_expression&,
&name& : &(表达式)Expression&,
&type& : &String&,
&description& : &Listener expression definition.&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &execution_listener_delegate_expression&,
&name& : &(委托表达式)Delegate expression&,
&type& : &String&,
&description& : &Listener delegate expression definition.&,
&value& : &&,
&width& : 200,
&optional& : true
&id& : &execution_listener_fields&,
&name& : &(字段)Fields&,
&type& : &Complex&,
&width& : 100,
&optional& : false,
&complexItems& : [ {
&id& : &execution_listener_field_name&,
&name& : &(名称)Name&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &execution_listener_field_value&,
&name& : &(字符串值)String value&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&id& : &execution_listener_field_expression&,
&name& : &(表达式)Expression&,
&type& : &String&,
&value& : &&,
&width& : 200,
&optional& : false
&name& : &eventListener&,
&properties& : [ {
&id& : &eventlisteners&,
&type& : &multiplecomplex&,
&title& : &Event listeners&,
&value& : &&,
&description& : &Event listeners for events related to the process definition.&,
&popular& : true,
&complexItems& : [ {
&id& : &event_listener_events&,
&name& : &Events&,
&type& : &String&,
&description& : &Listener events.&,
&value& : &&,
&width& : 150,
&optional& : true
&id& : &event_listener_class&,
&name& : &Class&,
&type& : &String&,
&description& : &Listener implementation class.&,
&value& : &&,
&width& : 150,
&optional& : true
&id& : &event_listener_delegate_expression&,
&name& : &Delegate expression&,
&type& : &String&,
&description& : &Listener delegate expression definition.&,
&value& : &&,
&width& : 150,
&optional& : true
&id& : &event_listener_entity_type&,
&name& : &Entity type&,
&type& : &Choice&,
&description& : &Listener entity type.&,
&value& : &&,
&width& : 100,
&optional& : true,
&items& : [ {
&id& : &attachment&,
&title& : &Attachment&,
&value& : &attachment&,
&refToView& : &&
&id& : &comment&,
&title& : &Comment&,
&value& : &comment&,
&refToView& : &&
&id& : &execution&,
&title& : &Execution&,
&value& : &execution&,
&refToView& : &&
&id& : &identity-link&,
&title& : &Indentity link&,
&value& : &identity-link&,
&refToView& : &&
&id& : &job&,
&title& : &Job&,
&value& : &job&,
&refToView& : &&
&id& : &process-definition&,
&title& : &Process definition&,
&value& : &process-definition&,
&refToView& : &&
&id& : &process-instance&,
&title& : &Process instance&,
&value& : &process-instance&,
&refToView& : &&
&id& : &execution&,
&title& : &Execution&,
&value& : &execution&,
&refToView& : &&
&id& : &event_listener_throw_event&,
&name& : &Throw event&,
&type& : &Choice&,
&description& : &Listener event type to throw.&,
&value& : &&,
&width& : 100,
&optional& : true,
&items& : [ {
&id& : &signal&,
&title& : &Signal&,
&value& : &signal&,
&refToView& : &&
&id& : &globalSignal&,
&title& : &Glocal signal&,
&value& : &globalSignal&,
&refToView& : &&
&id& : &message&,
&title& : &Message&,
&value& : &message&,
&refToView& : &&
&id& : &error&,
&title& : &Error&,
&value& : &error&,
&refToView& : &&
&id& : &event_listener_throw_event_ref&,
&name& : &Signal/Message name - Error code&,
&type& : &String&,
&description& : &Signal name, Message name or error-code.&,
&value& : &&,
&width& : 150,
&optional& : true
&name& : &customformdefinition&,
&properties& : [ {
&id& : &customformdefinition&,
&type& : &Choice&,
&title& : &(自定义表单)Custom form&,
&value& : &&,
&description& : &Des A&,
&popular& : true,
&items& : [ {
&id& : &1&,
&title& : &form 1&,
&value& : &1&
&id& : &2&,
&title& : &form 2&,
&value& : &2&
&id& : &3&,
&title& : &form 3&,
&value& : &3&
&name& : &loopcharacteristics&,
&properties& : [ {
&id& : &looptype&,
&type& : &Choice&,
&title& : &(循环类型)Loop type&,
&value& : &None&,
&description& : &Repeated activity execution (parallel or sequential) can be displayed through different loop types&,
&popular& : false,
&items& : [ {
&id& : &c1&,
&title& : &None&,
&title_de& : &Keine Schleife&,
&value& : &None&,
&refToView& : &none&
&id& : &c2&,
&title& : &Standard&,
&title_de& : &Standard&,
&value& : &Standard&,
&icon& : &activity/list/looptype.standard.png&,
&refToView& : &loop&
&id& : &c3&,
&title& : &MI Parallel&,
&title_de& : &MI parallel&,
&value& : &Parallel&,
&icon& : &activity/list/mi.parallel.png&,
&refToView& : &parallel&
&id& : &c4&,
&title& : &MI Sequential&,
&title_de& : &MI sequentialisiert&,
&value& : &Sequential&,
&icon& : &activity/list/mi.sequential.png&,
&refToView& : &sequential&
&name& : &activity&,
&properties& : [ {
&id& : &multiinstance_sequential&,
&type& : &Choice&,
&title& : &(顺序(多实例))Sequential (Multi-instance)&,
&value& : &Yes&,
&description& : &Define the multi instance as sequential.&,
&popular& : true,
&items& : [ {
&id& : &no&,
&title& : &No&,
&value& : &No&
&id& : &yes&,
&title& : &Yes&,
&value& : &Yes&
&id& : &multiinstance_cardinality&,
&type& : &String&,
&title& : &(基数(多实例))Cardinality (Multi-instance)&,
&value& : &&,
&description& : &Define the cardinality of multi instance.&,
&popular& : true
&id& : &multiinstance_collection&,
&type& : &String&,
&title& : &(基数(多实例))Collection (Multi-instance)&,
&value& : &&,
&description& : &Define the collection for the multi instance.&,
&popular& : true
&id& : &multiinstance_variable&,
&type& : &String&,
&title& : &(元素变量(多实例))Element variable (Multi-instance)&,
&value& : &&,
&description& : &Define the element variable for the multi instance.&,
&popular& : true
&id& : &multiinstance_condition&,
&type& : &String&,
&title& : &(完成条件(多实例))Completion condition (Multi-instance)&,
&value& : &&,
&description& : &Define the completion condition for the multi instance.&,
&popular& : true
&id& : &isforcompensation&,
&type& : &Boolean&,
&title& : &(是否为补偿)Is for compensation&,
&value& : &false&,
&description& : &A flag that identifies whether this activity is intended for the purposes of compensation.&,
&popular& : false,
&refToView& : &compensation&
&stencils& : [ {
&type& : &node&,
&id& : &BPMNDiagram&,
&title& : &BPMN-Diagram&,
&description& : &A BPMN 2.0 diagram.&,
&view& : &diagram.svg&,
&icon& : &diagram.png&,
&groups& : [ &Diagram& ],
&mayBeRoot& : true,
&hide& : true,
&propertyPackages& : [ &baseattributes&, &processbase&, &executionlistenersbase&, &eventListener& ],
&roles& : [ ]
&type& : &node&,
&id& : &StartNoneEvent&,
&title& : &(启动事件)Start event&,
&description& : &启动没有一个特定的触发器事件&,
&view& : &startevent/none.svg&,
&icon& : &startevent/none.png&,
&groups& : [ &(启动事件列表)Start Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &formdefinition&, &nonestarteventbase&, &executionlistenersbase& ],
&roles& : [ &Startevents_all&, &sequence_start&, &StartEventsMorph&, &all& ]
&type& : &node&,
&id& : &StartTimerEvent&,
&title& : &(启动定时事件)Start timer event&,
&description& : &启动一个定时触发的事件&,
&view& : &startevent/timer.svg&,
&icon& : &startevent/timer.png&,
&groups& : [ &(启动事件列表)Start Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &timerdefinition&, &executionlistenersbase& ],
&roles& : [ &Startevents_all&, &sequence_start&, &StartEventsMorph&, &all& ]
&type& : &node&,
&id& : &StartMessageEvent&,
&title& : &(启动消息事件)Start message event&,
&description& : &启动一个消息触发的事件&,
&view& : &startevent/message.svg&,
&icon& : &startevent/message.png&,
&groups& : [ &(启动事件列表)Start Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &messagerefdefinition&, &executionlistenersbase& ],
&roles& : [ &Startevents_all&, &sequence_start&, &StartEventsMorph&, &all& ]
&type& : &node&,
&id& : &StartErrorEvent&,
&title& : &(异常事件)Start error event&,
&description& : &抛出BPMN异常的事件&,
&view& : &startevent/error.svg&,
&icon& : &startevent/error.png&,
&groups& : [ &(启动事件列表)Start Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &errorrefdefinition&, &executionlistenersbase& ],
&roles& : [ &Startevents_all&, &sequence_start&, &StartEventsMorph&, &all& ]
&type& : &node&,
&id& : &UserTask&,
&title& : &(用户任务)User task&,
&description& : &一个由特定用户完成的任务&,
&view& : &activity/usertask.svg&,
&icon& : &activity/list/type.user.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &usertaskbase&, &usertaskassignment&, &formdefinition&, &tasklistenersbase&, &asynchronousbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &ServiceTask&,
&title& : &(服务任务)Service task&,
&description& : &一个由服务逻辑完成的自动任务&,
&view& : &activity/servicetask.svg&,
&icon& : &activity/list/type.service.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &servicetaskbase&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &ScriptTask&,
&title& : &(脚本任务)Script task&,
&description& : &一个由脚本完成的特定任务,支持js groovy&,
&view& : &activity/scripttask.svg&,
&icon& : &activity/list/type.script.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &scripttaskbase&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &BusinessRule&,
&title& : &(业务规则任务)Business rule task&,
&description& : &一个由自定义业务规则完成的任务&,
&view& : &activity/businessruletask.svg&,
&icon& : &activity/list/type.business.rule.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &ruletaskbase&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &ReceiveTask&,
&title& : &(接受任务)Receive task&,
&description& : &一个等待信号的任务&,
&view& : &activity/receivetask.svg&,
&icon& : &activity/list/type.receive.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &ManualTask&,
&title& : &(手工任务)Manual task&,
&description& : &一个自动完成无逻辑的任务&,
&view& : &activity/manualtask.svg&,
&icon& : &activity/list/type.manual.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &MailTask&,
&title& : &(邮件任务)Mail task&,
&description& : &一个发送邮件通知的任务&,
&view& : &activity/sendtask.svg&,
&icon& : &activity/list/type.send.png&,
&groups& : [ &(活动列表)Activities& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &mailtaskbase&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &ActivitiesMorph&, &all& ]
&type& : &node&,
&id& : &SubProcess&,
&title& : &(子流程)Sub process&,
&description& : &子流程范围&,
&view& : &activity/subprocess.expanded.svg&,
&icon& : &activity/expanded.subprocess.png&,
&groups& : [ &(结构列表)Structural& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &EventSubProcess&,
&title& : &(事件子流程)Event sub process&,
&description& : &一个事件周期的子流程&,
&view& : &activity/event.subprocess.svg&,
&icon& : &activity/event.subprocess.png&,
&groups& : [ &(结构列表)Structural& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &asynchronousbase&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &CallActivity&,
&title& : &(调用活动)Call activity&,
&description& : &一个调用活动&,
&view& : &activity/callactivity.svg&,
&icon& : &activity/task.png&,
&groups& : [ &(结构列表)Structural& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &callactivitybase&, &asynchronousbase&, &executionlistenersbase&, &loopcharacteristics&, &activity& ],
&roles& : [ &sequence_start&, &Activity&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &ExclusiveGateway&,
&title& : &(互斥网关)Exclusive gateway&,
&description& : &一个选择的网关&,
&view& : &gateway/exclusive.databased.svg&,
&icon& : &gateway/exclusive.databased.png&,
&groups& : [ &(网关列表)Gateways& ],
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles& : [ &sequence_start&, &sequence_end&, &GatewaysMorph&, &all& ]
&type& : &node&,
&id& : &ParallelGateway&,
&title& : &(并行网关)Parallel gateway&,
&description& : &一个并行的网关&,
&view& : &gateway/parallel.svg&,
&icon& : &gateway/parallel.png&,
&groups& : [ &(网关列表)Gateways& ],
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles& : [ &sequence_start&, &sequence_end&, &GatewaysMorph&, &all& ]
&type& : &node&,
&id& : &InclusiveGateway&,
&title& : &(包容性网关)Inclusive gateway&,
&description& : &一个包容性网关&,
&view& : &gateway/inclusive.svg&,
&icon& : &gateway/inclusive.png&,
&groups& : [ &(网关列表)Gateways& ],
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles& : [ &sequence_start&, &sequence_end&, &GatewaysMorph&, &all& ]
&type& : &node&,
&id& : &EventGateway&,
&title& : &(事件网关)Event gateway&,
&description& : &一个事件网关&,
&view& : &gateway/eventbased.svg&,
&icon& : &gateway/eventbased.png&,
&groups& : [ &(网关列表)Gateways& ],
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles& : [ &sequence_start&, &sequence_end&, &GatewaysMorph&, &all& ]
&type& : &node&,
&id& : &Pool&,
&title& : &Pool&,
&groups& : [&Swimlanes&],
&description& : &Pools and Lanes represent responsibilities for activities in a process. A pool or a lane can be an organization, a role or a system.&,
&view& : &swimlane/pool.svg&,
&icon& : &swimlane/pool.png&,
&propertyPackages& : [ &elementbase&, &baseattributes&, &processbase& ],
&roles& : [ &all&, &messageflow_start&, &messageflow_end&, &fromtoall&, &canContainArtifacts& ],
&layout& : [{&type& : &layout.bpmn2_0.pool&, &orientation& : &horizontal&}]
&type& : &node&,
&id& : &Lane&,
&title& : &Lane&,
&groups& : [&Swimlanes&],
&description& : &Pools and lanes represent responsibilities for activities in a process. A pool or a lane can be an organization, a role or a system. Lanes subdivide pools or other lanes hierarchically.&,
&view& : &swimlane/lane.svg&,
&icon& : &swimlane/lane.png&,
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles&: [ &PoolChild&, &fromtoall&, &canContainArtifacts& ]
&type& : &node&,
&id& : &BoundaryErrorEvent&,
&title& : &(边界错误事件)Boundary error event&,
&description& : &一个捕捉BPMN异常的边界事件&,
&view& : &intermediateevent/error.svg&,
&icon& : &catching/error.png&,
&groups& : [ &(边界事件列表)Boundary Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &errorrefdefinition& ],
&roles& : [ &sequence_start&, &BoundaryEventsMorph&, &IntermediateEventOnActivityBoundary& ]
&type& : &node&,
&id& : &BoundaryTimerEvent&,
&title& : &(定时边界事件)Boundary timer event&,
&description& : &一个定时触发的边界事件&,
&view& : &intermediateevent/timer.svg&,
&icon& : &catching/timer.png&,
&groups& : [ &(边界事件)Boundary Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &cancelactivityattribute&, &timerdefinition& ],
&roles& : [ &sequence_start&, &BoundaryEventsMorph&, &IntermediateEventOnActivityBoundary& ]
&type& : &node&,
&id& : &BoundarySignalEvent&,
&title& : &(边界信号事件)Boundary signal event&,
&description& : &一个信号触发的边界事件&,
&view& : &intermediateevent/signal.catching.svg&,
&icon& : &catching/signal.png&,
&groups& : [ &(边界事件)Boundary Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &cancelactivityattribute&, &signalrefdefinition& ],
&roles& : [ &sequence_start&, &BoundaryEventsMorph&, &IntermediateEventOnActivityBoundary& ]
&type& : &node&,
&id& : &CatchTimerEvent&,
&title& : &(中间定时器捕获事件)Intermediate timer catching event&,
&description& : &定时器触发的中间捕获事件&,
&view& : &intermediateevent/timer.svg&,
&icon& : &catching/timer.png&,
&groups& : [ &(中间捕获事件列表)Intermediate Catching Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &timerdefinition&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &sequence_end&, &CatchEventsMorph&, &all& ]
&type& : &node&,
&id& : &CatchSignalEvent&,
&title& : &(中间信号捕获事件)Intermediate signal catching event&,
&description& : &信号触发的捕获事件&,
&view& : &intermediateevent/signal.catching.svg&,
&icon& : &catching/signal.png&,
&groups& : [ &(中间捕获事件列表)Intermediate Catching Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &signalrefdefinition&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &sequence_end&, &CatchEventsMorph&, &all& ]
&type& : &node&,
&id& : &CatchMessageEvent&,
&title& : &(中间消息捕获事件)Intermediate message catching event&,
&description& : &一个消息触发的中间捕获事件&,
&view& : &intermediateevent/message.catching.svg&,
&icon& : &catching/message.png&,
&groups& : [ &(中间捕获事件列表)Intermediate Catching Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &messagerefdefinition&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &sequence_end&, &CatchEventsMorph&, &all& ]
&type& : &node&,
&id& : &ThrowNoneEvent&,
&title& : &(中间抛出事件)Intermediate none throwing event&,
&description& : &无触发器的中间抛出事件&,
&view& : &intermediateevent/none.svg&,
&icon& : &throwing/none.png&,
&groups& : [ &(中间抛出事件)Intermediate Throwing Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &ThrowEventsMorph&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &ThrowSignalEvent&,
&title& : &(信号中间抛出事件)Intermediate signal throwing event&,
&description& : &一个信号触发的中间抛出事件&,
&view& : &intermediateevent/signal.throwing.svg&,
&icon& : &throwing/signal.png&,
&groups& : [ &(中间抛出事件)Intermediate Throwing Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &signalrefdefinition&, &executionlistenersbase& ],
&roles& : [ &sequence_start&, &ThrowEventsMorph&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &EndNoneEvent&,
&title& : &(结束事件)End event&,
&description& : &一个无触发器的结束事件&,
&view& : &endevent/none.svg&,
&icon& : &endevent/none.png&,
&groups& : [ &(结束事件列表)End Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &executionlistenersbase& ],
&roles& : [ &EndEventsMorph&, &sequence_end&, &all& ]
&type& : &node&,
&id& : &EndErrorEvent&,
&title& : &(结束错误任务)End error event&,
&description& : &一个抛出错误事件的任务&,
&view& : &endevent/error.svg&,
&icon& : &endevent/error.png&,
&groups& : [ &(结束任务列表)End Events& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &errorrefdefinition&, &executionlistenersbase& ],
&roles& : [ &EndEventsMorph&, &sequence_end&, &all& ]
&type& : &edge&,
&id& : &SequenceFlow&,
&title& : &(顺序流)Sequence flow&,
&description& : &顺序流定义活动的执行顺序.&,
&view& : &connector/sequenceflow.svg&,
&icon& : &connector/sequenceflow.png&,
&groups& : [ &(连接对象)Connecting Objects& ],
&layout& : [ {
&type& : &layout.bpmn2_0.sequenceflow&
&propertyPackages& : [ &elementbase&, &baseattributes&, &sequenceflowbase& ],
&roles& : [ &ConnectingObjectsMorph&, &all& ]
&type& : &edge&,
&id& : &Association&,
&title& : &(注释)Association&,
&description& : &连接一个注释到指定元素&,
&view& : &connector/association.undirected.svg&,
&icon& : &connector/association.undirected.png&,
&groups& : [ &(连接对象)Connecting Objects& ],
&layout& : [ {
&type& : &layout.bpmn2_0.sequenceflow&
&propertyPackages& : [ &elementbase&, &baseattributes& ],
&roles& : [ &ConnectingObjectsMorph&, &all& ]
&type& : &node&,
&id& : &TextAnnotation&,
&title& : &(文本注释)Text annotation&,
&description& : &给指定元素添加文本注释&,
&view& : &artifact/text.annotation.svg&,
&icon& : &artifact/text.annotation.png&,
&groups& : [ &(构件)Artifacts& ],
&propertyPackages& : [ &elementbase&, &baseattributes&, &textannotationbase& ],
&roles& : [ &all& ]
&rules& : {
&cardinalityRules& : [ {
&role& : &Startevents_all&,
&incomingEdges& : [ {
&role& : &SequenceFlow&,
&maximum& : 0
&role& : &Endevents_all&,
&outgoingEdges& : [ {
&role& : &SequenceFlow&,
&maximum& : 0
&connectionRules& : [ {
&role& : &SequenceFlow&,
&connects& : [ {
&from& : &sequence_start&,
&to& : [ &sequence_end& ]
&role& : &Association&,
&connects& : [ {
&from& : &sequence_start&,
&to& : [ &TextAnnotation& ]
&role& : &Association&,
&connects& : [ {
&from& : &TextAnnotation&,
&to& : [ &sequence_end& ]
&role& : &IntermediateEventOnActivityBoundary&,
&connects& : [ {
&from& : &Activity&,
&to& : [ &IntermediateEventOnActivityBoundary& ]
&containmentRules& : [ {
&role& : &BPMNDiagram&,
&contains& : [ &all& ]
&role& : &SubProcess&,
&contains& : [ &sequence_start&, &sequence_end&, &from_task_event&, &to_task_event&, &EventSubprocess&, &TextAnnotation& ]
&role& : &EventSubProcess&,
&contains& : [ &sequence_start&, &sequence_end&, &from_task_event&, &to_task_event&, &TextAnnotation& ]
&role& : &Pool&,
&contains& : [ &Lane& ]
&role& : &Lane&,
&contains& : [ &all& ]
&morphingRules& : [ {
&role& : &ActivitiesMorph&,
&baseMorphs& : [ &UserTask& ],
&preserveBounds& : true
&role& : &GatewaysMorph&,
&baseMorphs& : [ &ExclusiveGateway& ]
&role& : &StartEventsMorph&,
&baseMorphs& : [ &StartNoneEvent& ]
&role& : &EndEventsMorph&,
&baseMorphs& : [ &StartNoneEvent& ]
&role& : &CatchEventsMorph&,
&baseMorphs& : [ &CatchTimerEvent& ]
&role& : &ThrowEventsMorph&,
&baseMorphs& : [ &ThrowNoneEvent& ]
&role& : &TextAnnotation&,
&baseMorphs& : [ &TextAnnotation& ]
好了,以上内容希望对初学工作流引擎的朋友有所帮助.....
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊}

我要回帖

更多关于 activiti并行网关 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信