<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>第 6 章 jPDL</title><link rel="stylesheet" href="html.css" tppabs="http://www.family168.com/tutorial/jbpm4.0/shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="jBPM 4.4用户手册"><link rel="up" href="index.html" title="jBPM 4.4用户手册"><link rel="prev" href="services.html" title="第 5 章 服务"><link rel="next" href="variables.html" title="第 7 章 Variables变量"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" style="background-color:white;border:none;height:73px;border:1px solid black;"><a style="border:none;" href="javascript:if(confirm('http://www.family168.com/ \n\n该文件未被 Teleport Pro 下载,因为 它位于起始地址以设置的边界以外的域或路径中。 \n\n你想要从服务器打开它吗?'))window.location='http://www.family168.com/'" tppabs="http://www.family168.com/" title="Family168"><img src="family168.png" tppabs="http://www.family168.com/tutorial/jbpm4.0/shared/images/family168.png" border="0"></a></div><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第 6 章 jPDL</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="services.html" tppabs="http://www.family168.com/tutorial/jbpm4.0/html/services.html">上一页</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="variables.html" tppabs="http://www.family168.com/tutorial/jbpm4.0/html/variables.html">下一页</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="jpdl"></a>第 6 章 jPDL</h2></div></div></div>
<p>这章将会解释用来描述流程定义的
jPDL文件格式。jDPL是jBPM的突出的流程语言。jPDL的目标
是尽量精简和尽可能的开发者友好,在提供所有你期望
从BPM流程语言中获得功能的同时。
</p>
<p>jPDL的schema文件包含了比这个文档中更多的属性和元素。
这个文档解释了jPDL中稳定的被支持的部分。
试验性的、不支持的jPDL特性可以在开发者指南中找到。
</p>
<p>下面是一个jPDL流程文件的例子:
</p>
<pre class="programlisting"><?xml version="1.0" encoding="UTF-8"?>
<process name="Purchase order" xmlns="http://jbpm.org/4.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>
<decision name="Check supplier data">
<transition name="nok" to="Error" />
<transition name="ok" to="Completed" />
</decision>
<end name="Completed" />
<end name="Error" />
</process></pre>
<div class="section" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="process"></a>6.1. process流程处理</h2></div></div></div>
<p>顶级元素(element)是流程处理定义。
</p>
<div class="table"><a name="d4e859"></a><p class="title"><b>表 6.1. process流程处理的属性</b></p><div class="table-contents">
<table summary="process流程处理的属性" border="1"><colgroup><col><col><col><col><col></colgroup><thead><tr><th>属性</th><th>类型</th><th>默认值</th><th>是否必须</th><th>描述</th></tr></thead><tbody><tr><td>name名称</td><td>文本</td><td> </td><td>必须</td><td>在与用户交互时,
作为流程名字显示的一个名字或是标签。
</td></tr><tr><td>key键</td><td>字母或数字,下划线</td><td>如果省略,key中的非字母和非数字的字符会被替换为
下划线。</td><td>可选(optional)</td><td>用来辨别不同的流程定义。
拥有同一个key的流程会有多个版本。
对于所有已发布的流程版本,key-name这种组合都必须是
完全一样的。
</td></tr><tr><td>version版本</td><td>整型</td><td>比已部署的key相同的流程版本号高1,
如果还没有与之相同的key的流程被部署,那么版本就从1开始。
</td><td>可选</td><td>流程的版本号</td></tr></tbody></table>
</div></div><br class="table-break">
<div class="table"><a name="d4e888"></a><p class="title"><b>表 6.2. process流程的元素</b></p><div class="table-contents">
<table summary="process流程的元素" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>元素</th><th>个数</th><th>描述</th></tr></thead><tbody><tr><td>description描述</td><td>0个或1个</td><td>描述文本</td></tr><tr><td><a class="link" href="">activities活动</a></td><td>至少1个</td><td>流程中会有很多活动,
至少要有1个是启动的活动。
</td></tr></tbody></table>
</div></div><br class="table-break">
</div>
<div class="section" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="controlflowactivities"></a>6.2. 控制流程Activities活动</h2></div></div></div>
<div class="section" lang="zh-cn"><div class="titlepage"><di