成都心情

  语源科技BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  98 随笔 :: 2 文章 :: 501 评论 :: 1 Trackbacks

什么是 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

posted on 2005-08-12 10:09 Rosen 阅读(979) 评论(0)  编辑  收藏 所属分类: 工作流