jBPM4.0的用户指南(五-1)

第5章的内容太多了,所以我分开写了

[size=x-large]第 5 章 jPDL[/size]

jPDL文件描述的是流程的过程,这篇文章也可以作为jPDL的快速参考文档。

下面是一个jPDL流程文件的例子:

<?xml encoding="utf-8"?>
<process name="Purchase" xmlns="http://jbpm.org/4/jpdl">
<start>
<transition to="Verify supplier" />
</start>
<state name="Verify supplier">
<transition name="Supplier ok" to="Check supplier data" />
<transition name="Supplier not ok" to="Error" />
</state>
<exclusive name="Check supplier data">
<transition name="nok" to="Error" />
<transition name="ok" to="Completed">
</exclusive>
<end name="Completed" />
<end name="Error" />
</process>


[size=large]5.1. process流程处理[/size]

顶级元素(element)是流程处理定义

[size=medium]表 5.1. process流程处理的属性[/size]
属性 类型 默认值 是否必须 描述
name名称 文本 必须 在与用户交互时,作为流程名字显示的一个名字或是标签。
key键 字母或数字字符 如果省略,key会被非字母和非数字的字符替换。 可选(optional) 用来辨别不同的流程定义。拥有同一个key的流程会有多个版本。对于所有已发布的流程版本,key:name这种组合都必须是完全一样的。
version版本 整型 比已部署的key相同的流程版本号高1,如果还没有与之相同的key的流程被部署,那么版本就从1开始。 可选 流程的版本号

[size=medium]表 5.2. process流程的元素[/size]
元素 个数 描述
description描述 0个或1个 描述文本
activities活动 至少1个 流程中会有很多活动,至少要有1个是启动的活动。

[size=large]5.2. Activities活动[/size]

BPMN(Business Process Modeling Notation,业务流程建模符号):我们在这里不仅涉及了BPMN活动,而且还介绍了BPMN的事件(events)和网关(gateways)
[size=medium]5.2.1. start启动[/size]

简单的说是流程启动的流向(execution),准确地说是流程的一个启动活动(activity)。一个流程至少有一个启动(start)活动(activity),一个启动活动必须有一个向外的跳转(transition),这个跳转会在流程启动的时候被执行。

已知的限制:一个流程处理只能有一个启动节点(start)。
[size=medium]
表 5.3. start启动的属性[/size]
属性 类型 默认值 是否必须 描述
name名称 文本 可选 活动的名字,在启动活动没有内部的跳转(transition)时,name名称是可选的。

[size=medium]表 5.4. start启动的元素[/size]
元素 个数 描述
transition跳转 1 向外的跳转
[size=medium]
5.2.2. State状态节点[/size]

一个等待状态节点。流程处理的流向会在外部触发器调用提供的API之前一直等待。状态节点和其他的活动不一样,它没有其他任何属性或元素。
[size=small]5.2.2.1. 序列状态节点[/size]

让我们看一个用序列连接状态和跳转的例子。
序列状态节点

图 5.1. 序列状态节点

<process name="StateSequence" xmlns="http://jbpm.org/4/jpdl">
<start>
<transition to="a" />
</start>
<state name="a">
<transition to="b" />
</state>
<state name="b">
<transition to="c" />
</state>
<state name="c" />
</process>


下列代码将启动一个流向:

Execution execution = executionService.startProcessInstanceByKey("StateSequence");


创建的流程处理实例会停留在状态节点a的位置,使用signalExecution的方法就会触发一个外部触发器。

String executionId = exectuion.getId();
execution = executionService.signalExectuionById(executionId);


[size=small]5.2.2.2. 可选择的状态节点
[/size]
在第2个状态节点的例子里,我们将演示如何使用状态节点实现路径的选择。
状态节点中的选择

图 5.2. 状态节点中的选择

<process name="State" xmlns="http://jbpm.org/4/jpdl">
<start>
<transition to="wait for response" />
</start>
<state name="wait for response">
<transition name="accept" to="submit document" />
<transition name="reject" to="try again" />
</state>
<sate name="submit document" />
<state name="try again" />


让我们在这个流程处理定义里启动一个新的流程实例。

Execution execution = executionService.startProcessInstanceByKey("StateSequence");


现在,流向到达wait for response状态节点了。流向会一直等待到外部触发器的出现。这里的状态节点拥有多个向外的跳转,外部触发器将为向外的跳转提供不同的信号名(signalName),下面我们将提供accept信号名(signalName):

executionService.signalExecutionById(executionId,"accept");


流向会沿着名字是accept的向外的跳转继续进行。同样,当使用reject作为参数触发signalExecutionXxx方法时。流向会沿着名字是reject的向外的跳转继续进行。
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值