Shark管理应用是Java swing应用程序被管理者管理Shark引擎使用。有两类管理应用程序,第一种使用shark直接像使用一个库,另一种是使用shark的CORBA包装的接口部署为CORBA服务进行通信。它可以用于管理shark的包含XPDL文件(上传新的XPDL文件或删除存在的XPDL文件)的外部仓库,装载一些XPDL文件到shark,卸载,更新,实例化和监控shark的流程,执行参与者定义与真实用户之间的映射,应用程序定义与工具代理之间的映射,也包含一个嵌入的能够且于执行工作项或从一个用户重分配工作项另一个用户的任务管理器应用程序。
下一个片段描述管理应用程序可能发生的事情。
有两种类管理应用程序,第一类是使用shark像使用一个库,另一种是通过CORBA接口使用shark。
像使用shark库一样启动管理应用程序,你可以简单的执行适当的runSA脚本(依赖于操作系统)。
应用程序启动后,显示登录屏幕。事实上连接到shark,首先你需要输入用户名和密码。你可以在任何时候输入都是有效的,除非你之前记录了相同的用户名和不同的密码。
输入需要的参数点击“OK”按钮连接到shark服务器。
启动shark CORBA管理应用程序,你可以简单的执行适当的runA脚本(依赖于操作系统)。
应用程序启动后,显示登录屏幕。事实上连接到shark服务器,首先你需要输入用户名和密码。如果shark服务器的设置没有更改,默认的用户名和密码在shark服务器的“Shark.conf”文件为username=“admin”,password=“enhydra”。
下一步,你不得不了解CORBA名称服务器(shark服务器已经自己注册了)被启动的机器的名称和端口。同样,你不得不了解那个被shark注册在名称服务器上的服务器名称(这个参数设置在shark服务器的“Shark.conf”文件)。
如果你使用shark提供的脚本文件在你本地机器上的启动了名称服务器、shark服务器和客户端应用程序,并且你没有编辑这些文件,也没有编辑“Shark.conf”文件,除用户名和密码之外的所有值将被适当的设置。
输入需要的参数点击“OK”按钮连接到shark服务器(当然,shark服务器已经使用适当的运行脚本启动)。
注意:如果你想一次完整的启动名称服务器、shark服务器和管理应用程序,你将简单的运行适当的runAll脚本。
Shark管理员应用程序分为几个逻辑部份。在下面片段描述每个部份。
仓库管理显示在shark引擎的XPDL仓库中的所有可使用的文件。这里是你可以管理shark引擎的XPDL仓库的位置。你可以从本地机器上传一个新的XPDL文件到shark引擎的仓库中,或者从仓库中删除一个存在的文件。
上传一个新的包,点击“上传”按钮。将弹出选择你本地文件系统显示的XPDL文件的对话框。选择你要上传的包,对话框输入相对于shark引擎仓库显示的文件路径。在这里你可以输入XPDL在Shark引擎中的目录和文件名。你可以输入一些像这样:test/conformance/text.xpdl。
之后文件被上传到shark引擎的仓库中,它可以被装载到shark引擎,流程可以被启动,在后面部份将进行描述。
同样,你可以在shark引擎的仓库中选择你想删除的文件点击“删除”按钮进行删除。
注意:如果你上传到shark引擎仓库的文件是无效的,将显示描述问题的错误消息,并且这个包是不会被上传的。
包管理显示已经装载到Shark引擎的所有包(XPDL文件)。可以从引擎中装载和卸载包,也可以更新一些存在的包并同步引擎的包缓存。
·装载包:装载包到shark引擎,你可以点击“装载”按钮并选择包仓库中的存在的包。你可以从shark引擎仓库装载除已经装载的和与已经装载有相同Id的包的所有包。当你在列表中选择一个包,它的文件名和Id显示在文本框中。然后,你点击“装载”按钮包将被装载到shark引擎(它是有效的和装载是没有问题),你可以启动流程实例基于包中的流程定义。
注意:如果这个包参考一些外部包,它们也将被装载到shark引擎 – 当时,它们也是有效的。
如果你想装载到shark引擎的文件是无效的,描述问题的错误信息将显示,并且这个包是不会被装载的。
·卸载包:你可以从shark引擎中选择你想卸载的包并且点击“卸载”按钮进行卸载。如果仍然存储在数据库中的包的流程定义没有已经实例化的流程和没有参考其它的包,它将从shark引擎中被卸载。之后你不能从它的流程定义中实例化流程。
你也有可能性卸载一些包的所有版本,但是超过上述需要必须是每个包版本的填充。
·更新包:如果你想更新包,你可以选择包并点击“更新”按钮进行更新。你想更新的相同Id的包在仓库中的包列表显示。你可以从列表中选择包并点击“更新”按钮进行更新。在旧的包流程定义上运行的流程继续运行,你可以基于新的包版本流程定义创建流程。
如果你想更新的包文件是不效的,描述问题的错误信息将显示,并且这个包是不会被更新的。
注意:当你从实例化或监视部份浏览流程定义图象显示时,如果一些包有多个版本存在,你将只能看到最新的包的流程定义,如果实际的流程/流程管理器是基于旧的定义,因此浏览是无效的。同样属性为真你可以在包的树中右键读取。
从这里,你可以浏览被装的包的包的流程定义树。如果你从树中选择一个包点击左键,你可以获取包的属性对话框。如果你选择包的一些流程定义,你也可以点击右键获取属性对话框,你也可以做一些其它的事:
·在窗口右边,你可以看到一些常规流程属性,伴随当前基于流程定义中正在运行的流程一起。
·你可以通过点击“实例化”按钮创建一个新的运行流程实例并启动他。
·你可以通过点击“视图”按钮查看流程图形显示。
·你可以通过点击“描述”按钮查看流程定义描述。
·你可以激活或失效包中的特殊流程或全部流程定义。
·你可以执行任务重建(这是有用的,如果你更改了参与者与用户的映射并且想应用到已经创建的任务)。
注意:当你浏览流程定义图象显示时,如果一些包有多个版本存在,你将只能看到最新的包的流程定义,如果实际的流程/流程管理器是基于旧的定义,因此浏览是无效的。同样属性为真你可以在包的树中右键读取。
流程监视是分为四个主要部份。包-流程定义-流程实例化树允许你选择包流程定义的正运行的实例。你选择流程实例时,其他的部份图解式的数据根据这一个流程实例进行变化。你可以看到实例的主要属性(名称,当前状态),你可看到当前运行创建的活动流程符号图,并且可以用底部按钮在流程实例是执行不同的操作。
你可以执行的操作是:
·启动流程 – 可以在流程在open.not_running.not_started状态时启动流程。
·挂起流程 – 该流程的所有活跃活动和经过一些子流程活动实例化的同步子流程将被挂起。
·恢复流程 – 该流程的所有活动和被一个活跃的子流程活动实例化的同步子流程将被恢复。
注意:如果你试着恢复被恢复的流程的一个活跃的子流程活动启动的一个同步流程 – 你不能这样做,当父活动被恢复时它将自动被恢复。
·终止流程 – 所有的活动和被一个活跃的子流程活动实例化的同步子流程将被终止。
·异常终断流程 -所有的活动和被一个活跃的子流程活动实例化的同步子流程将被异常终断。
·游览流程历史 – 按时间顺序排列的流程启动之前产生的流程视图(流程什么时候启动,什么时候改变状态,什么时候改变流程变量,什么时候改变活动状态,什么时候改变活动变量,什么时候活动被重分配到资源等。。。)。
·查看流程描述。
·查看和编辑流程变量,如果需要你可以通过这种方式管理流程流向(如果转移条件依赖于流程变量)。
·登入活动管理对话框。对话框显示流程活动列表,并且你可以选择列表的活动它的状态将被显示到文件框中。从这个对话框,你可以在单个活动上执行类似的操作:
·挂起活动
·恢复活动
·终止活动(终止一个活动时,如果转移条件满足流程流向下一个活动)
·异常中断活动– 流程变为“阻塞“状态
·手动启动一个活动
·删除所有结束的流程
·删除选择的流程(或基于选择的流程定义结束流程,或基于包的所有流程定义结束流程)
·执行所有流程的活动最终期限检查
·执行所有流程和活动的限制检查
它分为三部份:
·账号 – 你可以管理shark服务器用户定义一个新的用户,删除存在的账号或更改账号属性。
注意:如果shark配置使用用户组管理器的LDAP实现,你将不能创建一个新的用户,修改或删除存在的账号,但可以查看存的账号。
·登录 – 显示当前登录的用户列表。
·映射 – 允许你映射包和包的流程参与者到实际shark用户。当你定义一些映射,并且流程到达在活动需要被参与者映射到一个或多个的实际用户来执行时,工作项目将被放到每个映射的用户的工作列表中。
你可以映射一个包和包的流程应用程序到实际的应用程序通过工具代理处理。通常的,六种工具代理与shark一起分发。映射应用程序定义到工具代理应用程序,你到管理应用程序的应用程序映射部份点击“添加”按钮。对话框将出现并且你在对话框的左边选择应用程序定义和在右边选择工具代理。然后你输入一些工具代理映射参数。当你映射应用程序定义到工具代理时,shark将试着连接适当的工具代理并要求它执行应用接收执行结果。这里是映射应用程序定义到工具代理应用程序可以输入的参数简短的描述:
·用户名和密码 – 工具代理不需要分布式Shark。一些其它的工具代理可以用它在调用应用程序时登录程序。
·应用程序名称 – 被工具代理启动的应用程序名称(例如:对于JavaClassToolAgent将是类的命名,对于RuntimeApplicationToolAgent将是可执行文件在工具代理所在机器的路径,对于JavaScriptToolAgent可以是java脚本文件名称或java脚本自身之一,依赖于应用程序模式属性),对于SOAPToolAgent是Web服务的位置和MailToolAgent是MailMessageHandler调用实际发送/接收邮件的类。
·应用程序模式 – 不同的工具代理使用属性为不同的目的。例如:RuntimeApplicationToolAgent使用模式0表示系统应用程序结束之前不结束执行(否则它将启动系统应用程序并返回结束状态->活动不等待系统应用程序结束,流程进入下一个活动),JavaScriptToolAgent使用模式0表示查找java脚本文件(否则,应用程序名称将被认为java脚本)。
你可以找到更多关于工具代理映射信息在工具代理文档中。
你可以使用这部份管理shark的缓存大小。你可以更改流程和资源缓存大小,也可以清除它们。
这非常相同于shark的任务列表管理应用程序。从这里,你可以流程实例的工作项目。你可以执行自己的工作项目,查看其他人的工具项目。同样,你有可能性的重分配工作项目从一个用户到另一个用户。
通过点击“完成”按钮执行工作项目,或在表中右键点击它。如果工作项目有你想更新的变量,你将在“完成”时要求更新变量,或者你可以在完成这个项目之前登录更新对话框(但仅仅在你已经接收该工作项目)。
当一个工作项目放到两个或多个不同用户的任务列表中时,它将停留在这里至到他们中的任何人接受它。当某人接受了这个工作项目,它将从其他用户的任务列表中删除,并且如果接受人拒绝该工作项目,然后,这个工作项目将放回到适当用户任务列表。
注意:在执行一个工作项目时能够更新或浏览变量,这个活动有一些特殊的扩展属性定义,这里是例子:
·如果在执行活动时你想允许执行更新这个“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[http://jawe.objectweb.org]工作流编辑器。