成都心情

  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 阅读(847) 评论(0)  编辑  收藏 所属分类: 工作流

只有注册用户登录后才能发表评论。


网站导航: