什么是 Enhydra Shark 管理程序?
Shark 管理程序是一个 Java swing 应用程序,管理者可用于进行 Shark 引擎的管理。有两种管理程序,一种是把 shark 直接作为库来使用,另一种是利用 shark 的 CORBA 包装器接口,配置成CORBA 服务与Shark进行通信。该管理程序可用来处理含有XPDL文件(上传新的 XPDL 文件或删除已有)的 shark 外部库,向 shark 中加载 XPDL 文件,以及卸载、更新该文件,以实例化和监控 shark 的流程,进行参与者定义到实际用户间的映射, application definitions 和 Tool agents 间映射,等等。该管理程序还包括用来执行 workitem 的内置 worklist 处理程序,或从某个用户向另一用户再次指派 workitem。
下一章节将阐述管理程序的可行性。
启动 Shark 管理程序
有两种管理程序,第一个是把 shark 直接作为库来使用,另一个则通过它的CORBA 接口来使用它。
启动把Shark作为库来使用的管理程序
要启动把Shark作为库来使用的 shark 管理程序,你只需执行 runSA 脚本(runSA.bat)即可(依赖操作系统)。
当程序启动后,将会出现登陆界面。要真正连接上 shark,首先你应该输入用户名和密码。你输入什么都可以,但必须是合法的,除非你以前用相同用户名和不同密码登陆过。
当你输入了必要的参数后,点击 OK 按钮,你将连接上 shark。
启动 CORBA 管理程序
采用这种方式,你只需执行 runA 脚本(runA.bat)即可(依赖操作系统)。
当程序启动后,将会出现登陆界面。要真正连接上 shark,首先你应输入用户名和密码。如果 shark 服务器设置没有发生改变过,默认用户名和密码写在 "Shark.conf" 中,分别是 usename="admin",password="enhydra"。
下一步,你应该知道启动的 CORBA 命名服务器所在机器(Shark 服务器本身已经登记的机器)的名称和端口。同时,你必须知道自己登记的命名服务器的名字(该参数也设置在服务器"Shark.conf"文件里)。
如果已经启动命名服务器,服务器和客户都在你的本地机器上,使用给定的脚本文件,要是没有改变 "Shark.conf" 文件的话,除了用户名和密码外的所有值都被设置好了。
当你输入了必要的参数后,点击 OK 按钮,将连接上服务器(当然,服务器应该调用 run 脚本(run.bat)先运行起来)。
注意:如果你想把命名服务器、shark 服务器和管理程序一起启动,你只需简单的运行 runAll 脚本(runAll.bat)即可。
使用 Shark 管理程序
shark 管理程序被分成多个逻辑部分。各部分分别表述下列内容。
库管理(Repository Management)
库管理中显示了在引擎的 XPDL库里所有可利用的文件。在这里你能管理引擎的 XPDL 库,可以从本地上传新的 XPDL 文件到服务器的知识库中,或删除其中一个。
上传新包,要点击 'upload' 按钮。接着出现一个对话框让你从本地文件系统选择 XPDL 文件。当你选择了要上传的包文件后,对话框将自动显示引擎库的相对路径。你也可以自己定义引擎上的 XPDL 目录结构和文件名。例如:test/conformance/test1.xpdl。
当文件上传到引擎的库后,就可被载入到引擎中,流程也就可以运行起来了,这些都会在下面描述到。
当然,你也能从引擎的库选择想要删除的文件,再点击 'delete' 按钮。
注意:如果你想上传到库的文件不是 'shark' 合法的,一些描述问题原因的信息会显示出来,包将不会被上传。
包管理(Package Management)
包管理显示了所有装载到引擎的包(XPDLs)。包管理允许你从引擎中装载和卸载包,而且也能更新已载入包和同步引擎包的缓存。
载入包:要把包载入到引擎中,你应该点击 'load' 按钮,接着选择某个包。你所载入的包都来自于引擎库,除了当前你已经载入的包,并且 Id 和已经被装载的包名一样。当你从列表选择了包,文件名和 Id 会显示到文本筐内。接着,再点击 'Load' 按钮,包将被加载到引擎中(如果是合法且在加载过程中没问题),你将能启动基于包流程定义的流程实例。
注意:如果包引用了一些外部包,这些外部包也会被载入引擎,当然他们也要是合法的。
注意:如果你想加载到引擎的文件不是 'shark' 合法的,将会显示问题描述的错误信息,接着包被卸载掉。
卸载包:要从引擎卸载包,先选择好目标,然后点击 'unload' 按钮。如果包流程定义中没有已实例化的流程,则仍旧保留在 DB 中,并且这个包也没有引用任何其他包,则将从引擎中卸载。一旦卸载了,你不能从流程定义中实例化流程。
你也有可能卸载包的所有版本,但这需要 furfilled 包的每个版本。
更新包:如果你想更新包,就先选中它,再点击 'update' 按钮。将列出库中所有的包,显示了和你想要更新名称一样的 Id(包)。接着再选择其中一个点击 'update' 按钮。这个时候的流程还是基于原先包中定义运行,不过你可以建立基于新版本包的流程定义。
如果你想更新的包文件不是 'shark' 合法的,将会出现错误信息。
注意:流程定义的可视化图形界面将会在实例化和监控章节说明,如果一些包有多个版本,你只能看到最新的包流程定义,无论实际的流程管理器是否基于老的版本,所以视图在这种情况下是无效的。同样可以在包列表树上点击鼠标右键取得属性。
流程实例管理(Process Instantiation Management)
从这里开始,你将看到已装载包的流程定义(package-processdefinition) 树。如果你从树中选择了一个包,并点击鼠标左键,将会出现包属性对话框。如果你选择了某些包流程定义,你就可以通过点击鼠标右键得到属性对话框,当然也可以做些其他事:
在右边,有些基本的流程属性,以及基于流程定义的当前流程运行数目。
通过点击 'Instantiate' 按钮,你将创建新的流程运行实例。
通过点击 'View' 按钮,你能看到流程的图形化视图。
通过点击 'Description' 按钮,你能看到流程定义的描述。
你能把包的具体流程定义或整体流程定义设置为有效或无效。
你可进行指派的重新评估(如果你改变了参与者 -> 用户的映射,并且想应用到已建好的指派中,这会很有用)。
注意:当图形化界面中出现了相同流程定义的多个版本,你只能看见最新的一个,无论实际流程管理器是否根据老定义运行,那样的话视图是无效的。同样对包树上的流程定义单击鼠标右键读取属是有效的。
流程监控(Process Monitor)
流程监控被分成四个主要部分。package-processdefinition-processinstances 树允许你从包流程定义中选择某个正在运行的实例。当选择了流程实例,另一部分将会显示相应的流程实例的图形化数据。你会看到主要的实例属性(名字、当前状态),你能看到标记了当前正在运行,处于活动状态的流程实例的图形化对话框,你也能通过底部的按钮对流程实例进行不同的操作。
可进行的操作如下:
启动流程 - 如果流程处于 open.not_running.not_started 状态则可用。
暂停流程 - 通过激活 subflow 活动,所有激活的活动以及同步 sub-processes 的实例化将暂停。
恢复流程 - 通过激活 subflow 活动,所有活动和同步的 sub-processes 将被恢复。注意:( if you try to resume a synchronous process started by some subflow activity of the suspended process)。你将不会直接做这件事,因为当 'parent' 激活恢复后将自动恢复。
终止流程 - 所有活动和同步 sub-processes 的实例化都是通过激活 subflow 活动来终止的。
中断流程 - 所有活动和同步 sub-processes 的实例化都是通过激活 subflow 来中断的。
查看流程历史 - 从流程启动开始记录,按时间顺序排列(当流程启动,当流程状态改变,当流程变量改变,当流程活动状态改变,当流程活动变量改变,当活动指派给资源...)。
查看流程描述
查看和编辑流程变量,那样你能按需管理流程(如果转换条件依赖变量值)。
进入活动管理对话框。对话框显示了流程活动列表,当你选中一个,当前状态会显示在文本筐中。从这个对话框,你能对单个活动做类似操作:
暂停活动
恢复活动
终止活动(当你终止一个活动,如果满足转换条件的话,流程会处理下一活动)
中断活动 流程变成 'stucked' 状态
手动启动活动
删除所有已完成流程
删除选中的流程(或基于选中流程定义的已完成流程,或基于所有包流程定义的已完成流程)
进行所有流程的活动终止期检查
进行所有流程和活动的限制检查
用户管理(User Management)
分为三个部分:
帐户(Accounts) - 通过定义新帐户,删除已存在帐户或改变他们的属性来达到管理 shark 服务器用户目的。
注意:如果 shark 被配置为依赖 LDAP 实现的 UserGroup 管理器,将不能创建新帐户以及修改或者删除存在的帐户,只能查看已存在的。
日志(Logged) - 显示已记录日志的用户
映射(Mapping) - 让你能为真实的 shark 用户映射包和包流程参与者。一旦定义了映射,并且当一项活动需要一个或多个实际用户映射到参与者执行时,就需要在这里查看流程,每个已映射用户的 workitem 将被放在 worklist 中。
应用映射(Application Mapping)
你能映射包以及包流程应用到由tool agent控制的实际应用。目前 Shark 发布了六个 tool agent。要映射应用定义到 tool agent 应用,你应该去管理程序的应用映射部分,点击 'add' 按钮,将会弹出对话框,可以从左边的框中选择应用定义,tool agent 则在右边的筐中。接着可以为 tool agent 输入一些映射参数。当应用定义映射到 tool agent 时,shark 将试图连接到相应的 tool agent,让它执行该应用,接着得到执行结果。以下是关于设置参数的摘要性描述:
用户名和密码 - 对于 Shark 自带的 tool agent 不是必须输入的。而其他 tool agent 却需要,因为调用应用时需要登陆。
应用名称 - 应该由 tool agent 启动的应用名称(例如:JavaClassToolAgent 是类的全名,RuntimeApplicationToolAgent 是可执行文件名,应该是 tool agent 所在机器的路径,JavaScriptToolAgent 代表 java 脚本文件的名字,或者是 java 脚本自身,依赖应用模型属性),对于SOAPToolAgent来说它是WEB 服务的位置,MailToolAgent 是 MailMessageHandler 的类,用来进行发送/接收邮件。
应用模型 - 不同的 tool agent 使用该属性是为了达到不同目的。例如,RuntimeApplicationToolAgent 使用模型 0 表明直到系统程序结束才能结束运行(另外,它将启动系统程序并返回完成状态 -> 活动不等系统程序结束,而流程接着处理下一活动),JavaScriptToolAgent 使用模型 0 表明它要搜索 java 脚本文件(另外,程序名字将被认为是 java 脚本)。
更多关于 tool agent 映射可参考 Tool Agent 文档
缓存管理(Cache Management)
通过本部分你可以设置 shark 缓存大小。可以改变流程以及资源缓存的大小,也可以清除它们。
Worklist 管理(Worklist Management)
这几乎和 shark 的 worklist 处理程序是相同的。通过这些,能处理已实例化流程的 workitem。你能处理自己的 workitem,也能看到其他的 workitem。同样,也能把 workitem 从一个用户指派给其他用户。
点击 'complete' 按钮 workitem 将执行,或在表单中双击它也可。如果 workitem 中有你打算更新的变量,当 'completing' 时你将会被问到是否更新,或在你输入更新对话框之前完成了 workitem(只是在你接受它之后)。
当 workitem 中被放入两个或多个不同用户的列表时,它将停留在那里直到任何一个用户受理它。一旦有人受理 workitem,该 workitem 就从其他用户的 worklist 中去除,而如果该用户又拒绝受理 workitem,则该 workitem 将退回到适当的用户 worklist 中。
注意:为了在执行 workitem 时能更新或查看变量,活动定义必须有一些特殊的外部属性被定义,范例如下:
如果你想在执行活动时允许执行者更新 'x' 流程变量,在创建流程定义时,你应该为那些活动定义以下外部属性:
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="x"/>
如果你想在执行活动时只允许执行者看到 'y' 和 'z' 流程变量,在创建流程定义时,你应该为那些活动定义以下两个外部属性:
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="y"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="z"/>
如果你想在执行活动时允许执行者更新 'x'、'y'、'z' 流程变量,同时观察 'a'、'b'、'c' 变量,应该为给定活动定义以下外部属性:
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="x"/>
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="y"/>
<ExtendedAttribute Name="VariableToProcess_UPDATE",Value="z"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="a"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="b"/>
<ExtendedAttribute Name="VariableToProcess_VIEW",Value="c"/>
利用 Enhydra JaWE 工作流编辑器,你可以更简单地进行以上工作。
请注意!引用、转贴本文应注明原译者:Rosen Jiang 以及出处:http://www.blogjava.net/rosen