作者:jBPM组
版本:5.0.0
原文版权归作者所有,该翻译稿仅供学习交流使用,引用或转载请保证该部分的完整
章节9 控制台
9.1安装
9.2运行
9.2.1管理流程实例
9.2.2人工任务列表
9.2.3报表
9.3添加新的流程/任务表单
9.4REST接口
可以通过Web控制台管理业务流程,包括实例的管理(启动/停止/查看) ,查看或者执行任务,生成报表。
jBPM控制由二个war组成,需要部署你的应用程序服务上,包括其他必要的类库、应用程序。其中一个jar包括服务端应用程序,另一个客户端。
9.1安装
使用安装程序可以轻松地启用控制台,包括下载,安装,配置所有运行控制台必要的组件,内存数据库,人工任务服务等。可参考安装章节了解更多信息。
9.2运行
打开下面的URL(按所配置的应用程序服务器替换主机与端口):
http://localhost:8080/jbpm-console
将弹出一个登录界面,询问帐号与密码。默认支持以下几组帐号/口令: krisv/krisv, admin/admin, john/john and mary/mary。
输入信息之后,即会打开流程管理器工作台,如下图所示。在右侧你会看到一些与流程实例管理、人工任务列表及报表有关的一些标签,后面章节将解释这些标签。
9.2.1管理流程实例
可以在"Processes" 中查看当前安装的knowledge base中的流程定,启动新的流程实例,管理正在运行的实例(查看状态与数据)。
9.2.2.1 查看流程定义
打开流程定义列表可以看到全部的流程,可以查看某一流程的实例或者启动新的流程实例。
9.2.1.2 启动新的流程实例
要启动某一流程的新实例,可以在流程定义任务列表中选择该流程,点实例表上"Start"按钮即可。如果该流程有关联表单,则会显示该表单。完成表单之后,流程将根据所填的信息启动。
9.2.1.3 管理流程实例
流程实例列表显示某一流程定义的全部正在运行的实例。选择一个流程实例可以查看详细信息。
9.2.1.4查看流程实例状态
点击"Diagram"按钮会打开流程图,可以查看某一流程实例的状态,带红色三角形的节点表示是正在执行的(如正在等完成的人工任务,或者等待其他入连接的联合节点)。[多实列的节点可能会同时执行,此时只显示一个红色三角形]
9.2.1.5 查看流程实例的变量
点击"Instance Data"按钮可以某一流程实例的顶层变量。
9.2.2人工任务列表
用户可以在任务管理部分查看自己当前的任务列表。组任务列表显示全部的任务,包含已经指派的及可以认领的。个人任务列表则只显示已经指派的任务。要执行任务,可以在个人任务列表上选择某一任务再选择"View"。如果该任务与表单关联则会打开表单,填写完表单之后将结束任务。
9.2.3报表
报表部分可以查看与流程的执行情况的报表。包括一个与全部流程相关的概要报表,如下所示。
也可以生成针对某一流程实例的报表。
jBPM提供了一些报表样例用于查看通用执行特征如每流程的活动实例数。可以定制报表替换报表目录的下的模块以显示所需要的一些重要信息。
9.3添加新的流程/任务表单
表单可用来(1)启动新的流程(2)完成人工任务。我们使用freemark模板动态地创建表单。为某一流程定义创建表单,可以创建一个名称为{processId}.ftl的freemark模块,该模板使用HTML代码建立表单。如上面的评估流程的起始表单就定义在com.sample.evaluation.ftl文件中:
类似的,某一类型的人工任务(以任务名称区分)表单在创建时用{taskName}.ftl命名可以与人工任务关联。在表单中可以访问表示当前任务的"task"参数,因些可根据任务输入动态的调整表单。task参数是一个在drools-process-task模块中定义任务模型对象,可据此来定制任务表单。例如,前面展示的评估表单就使用task参数读取任务描述并显示到表单中:
用户在表单输入的数据在任务结束时会做为参数添加。比如,上面的任务完成时,输出参数的映射中就包括返回值变量中的"performance","initiative","change"及"communication"。将这些参数映射到流程变量中,流程就可以获得返回值了。
使用表单需要在服务war中包含jbpm-gwt-form.jar。
9.4REST接口
控制台也提供了REST接口,通过接口可以很方便地跟引擎集成以启动流程实例或者获取任务列表等。
安装并启动控制台后,通过下面的URL可以查看REST接口的URLS列表:
http://localhost:8080/gwt-console-server/rs/server/resources
例如可以用
/gwt-console-server/rs/task/{taskId}/close
关闭任务
或者用
/gwt-console-server/rs/process/definition/{id}/new_instance
启动流程实例
章节10业务活动监控
10.1报表
10.2直接干预
你可能需要能主动地监控流程确保拥有快速发现异常及对非预期的事件作出反应的能力。Business Activity Monitoring(BAM)实时的与流程关联,可以基于事件分析进行甚至自动的干预。
jBPM允许用户基于流程引擎触发的事件生成报表,使用复杂的事件处理规则(Drools Fusion)在特定情况下直接进行干预,下面两节将对此进行描述。jBPM平台的后续版本将支持BAM的全部需求,包括能于引擎轻松交互,查看状态,生成报表等的Web方式的应用程序。
10.1报表
向流程引擎添加历史日志,可以将相关事件都保存到数据库中。这些历史日志可用来监控、分析流程的执行。可以使用Eclipse BIRT(Business Intelligence Reporting Tool商业智能报表工具)创建报表显示关键性能指示器。利用预定义的包含流程历史信息数据集或者其他数据源,你可以自己定报表。
Eclipse BIRT 框架可以定义数据集、创建报表、图表、进行预览、导出到web页。(参考Eclipse BIRT 文档了解如何定义自己的报表)。下面的截屏就是其中的一份图表。
图10.1用Eclipse BIRT创建报表
下面这图是基于一些历史数据创建的简单报表,显示了每小时的请求数及其平均完成时间。这个图表可检查非预期的请求数,及平均处理时间上的增幅等。这些图表可以在情况变得糟糕前发出问题信号。
图10.2事件报表
10.2直接干预
可以用报表查看流程的当前状态,但是需要依赖人工根据图表显示的信息执行操作,我们允许用户根据具体环境定义自动的响应。
Drools Fusion 提供了处理大量事件的功能,可以用来监控引擎。通过向引擎添加监听器,把相关的流程事件(如实例启动、结束,执行特定节点)传递给处理事件的会话。会话可以是处理流程的这个,也可以是独立的另一个。可以用Complex Event Processing(CEP)来处理这些事件。比如,规则可以用底层事件生成更高层次的事件,也可以定义如何响应特定情况。
下面这部分显示的是一个示例规则,该规则计算最近一小时内某一订单流程所有启动流程事件。如果一小时内超过1000个实例启动(假如超过服务器性能)就打印错误消息。注意在现实当中,规则可能用发送邮件或者其他形式的通知来代替简单的日志记录。
declare ProcessStartedEvent
@role( event )
end
dialect "mvel"
rule "Number of process instances above threshold"
when
Number( nbProcesses : intValue > 1000 )
from accumulate(
e: ProcessStartedEvent( processInstance.processId == "com.sample.order.OrderProcess" )
over window:size(1h),
count(e) )
then
System.err.println( "WARNING: Number of order processes in the last hour above 1000: " +
nbProcesses );
end
这些规则甚至可以在运行时根据引擎产生的事件自动修改引擎行为。比如,当一个特定情况发生时,额外的规则可以加入到Knowledge Base以修改引擎行为。如果在指定时间段内发生了大量的用户请求,一个额外的验证器将加入到流程中,强制流量控制器减少进入的请求数。再有部署额外的日志规则用于发现问题,如果情况好转,再移除这些规则。