YAWL使用教程之实例介绍
零.相关说明
本文章是通过例子来说明YAWL这个软件的使用,例子主要来自官方的使用手册第三章,但是使用手册中的例子只是讲述了如何设计,并没有说明如何运行,这里我们从设计到运行整个过程都进行一次,以期对这个软件的使用有一个基础的认识
一.YAWL的安装
本文的运行环境是ubuntu,所以这里只说怎么在ubuntu下搭建YAWL环境,当然windows环境更加简单;从官网下载到安装程序后,我下载的是 “YAWL-4.1-linux-installer.run”下载完成后,执行如下命令
chmod 755 YAWL-4.1-linux-installer.run #修改执行权限
./YAWL-4.1-linux-installer.run
按照上面的命令就可以安装好YAWL的,接下来到我们的安装目录下(如果你没有修改安装的目录的话,应该是主目录下的YAWL-4.1),可以看到这个目录下面有一个YAWL.sh脚本,打开查看这个脚本,我们大致可以看出这个脚本提供了三种使用方式
./YAWL.sh controlpanel #打开控制面板
./YAWL.sh editor #直接打开编辑器
./YAWL.sh editor /path/to/somefile.yawl #使用编辑器打开某个yawl文件
二. 案例说明
建议在看本文的案例使用之前可以看下使用手册的第三章,可以补充对这个一些基础知识的补充;
我们要做的是workflow specification如下:
上面的specification本身比较简单,就是一个对贷款申请的批准流程;在这里为了图方便(本文只是讲如何基本使用YAWL),只设定一种角色(Senior Credit Officer),一个用户(Michael Corleone)也就是说全部的task都将交给身为Senior Credit Officer的Michael Coreone来执行。这里的角色和用户就是资源了(看第三章的内容);
除了资源需求之外,我们还需要指定数据需求;在YAWL里面对数据需求的设置是在task decompositions里面设定的,decompositions的作用就是用于定义一个运行时的工作流过程如何与外界的环境进行交互;而每一个decompostions其实就是一系列的变量了,这些变量定义了运行的net或task实例的输入内容和输出内容;在YAWL里面,所有的数据在task实例启动时都是从net-level流向task-level,在task实例完成时都是从net-level流向task-level的。每一个task变量都会有变量的designations,这个决定了task变量是输入型的,输出型的,还是输入输出型的。这里还要再说一个概念就是绑定映射了,其实也很直观,就是数据的转换,当我们的数据从net流向task的时候(输入型变量),就叫做inbound mapping;当我们的变量从task流向net的时候(输出型),就叫做outbound mapping;这种绑定的描述语法是XPath,当然我们这里只会使用很简单的语法,而且编辑器还会帮我们生成。下面的表就是我们需要使用到的decompositions的内容了:
那么我们现在的任务就是,执行上面的流程,上面的流程一共会有6个任务,流程是
- Michael Corleone (下面简称mc) 接收"Receive and Validate Application"任务,并对外输出ApplicationID的值,完成该任务
- mc接收”Determine Credit Requirements“任务,接收ApplicationID这个值,并输出ApplicationAmount的值,完成该任务
- mc接收”Obtain Credit Report“任务,接收ApplicationID的值,并输出CreditReportRef的值,完成该任务 [其实第二个和第三是没有明确的前后之分的]
- "Choose Approval Process"任务,是根据ApplicationAmount的值自动决定的,不需要人力即可完成
- 根据“Choose Approval Process"任务的结果,会选择一个Credit Approval;这个Credit Approval会接收三个net variable ,ApplicationID,CreditReportRef, ApplicationAmount,并完成任务
- 流程结束
三. 实际操作
1)启动控制面板
执行如下命令(在YAWL的安装目录下),启动YAWL的控制面板
./YAWL.sh controlpanel
得到如下的界面
点击绿色的按钮,我们就可以启动我们的Resource Service和Engine了,当显示"Engine is Running"的时候,点击“Open the YAWL Logon Page”,输入用户名 admin,密码YAWL就可以进入了,可以看到如下的界面
这个东西就是Resource Service,我们后面定义资源和分配资源的时候就是使用这个系统;现在回到我们的YAWL的控制面板,点击“Lauch the YAWL Process Editor”,也就是启动我们的流程定义软件,这样的启动方式与我们直接用./YAWL.sh editor启动的区别在于,这个编辑器是与我们的Resource Service绑定的,我们可以很方便的在本地编辑流程然后直接上传,并可以获取到Resource Service定义的资源。
2)定义网络
使用编辑器,画出如下的流程网络(如果不知道怎么画,还是请看第三章)
3)定义Resource
前面我们说过,任务的执行需要有资源,也就是交给谁来执行,所以我们需要定义资源,同时上面也说了为了方便,我们只定义一种角色(Senior Credit Officer),一个用户(Michael Corelone);操作如下:
- 打开我们的Resource Service: http://localhost:8080/resourceService/ ([email protected])
-
点击菜单栏的"Org Data",点击“Roles”,设置信息如下:并点击"New"就可以了
- 接下来是添加用户,点击菜单栏的“User”,点击下面的“New”,启动添加,设置信息如下
这里有些要注意的,就是UserID和Password是后面我们要登录这个用户需要使用的。这个要记住。
- 我们尝试登录下这个用户,要先退出当前的admin用户的登录,或是使用另一个浏览器,然后,输出帐号 mc ,密码 (你自己设置的),可以得到如下
- 接下来回到Editor那里,为了简化,我们这里所有的任务都由mc这个用户来执行,点击"Receive and Validate Application" ,然后会出现左边的属性配置列表,点击"Task“下的"Resourcing“,点击它右边的三个小点,如下:
点击之后会出现一个配置列表,勾选”Enable System Offer“,然后做如下设置:[这里有一个要注意的,有时你在网上刚刚增加的资源,本地的编辑器可能没有显示,这时重启下编辑器就可以了]
- 所有的任务都重复上面的操作
4)定义Decomposition
除了定义Resource,我们还要定义好Decomposition,针对如下的表:
回到我们的Editor,操作如下:
- 点击"Receive and Validate Application" task,会出现在左边的属性配置,然后点击最下面的Decomposition的列表,点击Name,选择”New“,然后点击"Data Variables",设置如下:
这里有一个要注意的,就是我们设置好了Net Variables和在下面设置 DecompositionVariables的之后,要点击那个左边圈里的按键,进行Binding,打开后,会出现图中的页面,我们只要点击右边圈子里的按钮就会自动生成XPath语句了。
- Determine Credit Requirements的配置如下:
- Obtain Credit Report的配置如下:
- 两个Credit Approval的配置如下:
5)设置XOR
我们的流程中有一个XOR分支,我们需要设置它的分支条件,点击”Choose Approval Process“任务,点击左边属性列表的Task下面的 "Split Predicates",设置只有在申请金额超过5000时才走Large Credit Approval;(图中的语句是number(/Net/ApplicationAmount/test())>=5000
到这里我们的全部设置基本完成;
6)执行流程
保存我们的文件为yawlTest.yawl,并点击图中的圈圈
自动上传,上传成功后,我们可以看下的我们的控制面板有没有报错误信息如下:
发现一切正常,现在看我们的resource service,可看菜单栏的Case项,如下:
可以看到我们的specification已经上传,并且已经成功启动,看下我们的Admain Queues,如下:
可以看到worklisted(1)就是我们的第一个任务,并且这个任务被分配到了mc那里,可以登录mc的Resource service,如下:
我们点击Accept Offer,然后一步步往下走,它会让我们设置参数,一直到最后我们可以完成整个流程。
DOEN,教程到此结束。