JBoss 系列三十五:jBPM5示例之 Logging
2013-11-02 12:03
447 查看
在实际应用的BPM流程中经常需要日志记录某些信息,jBPM5中的Log Service Tasks可以完成这一任务。Logging流程示意图如下:
![](http://img.blog.csdn.net/20131029141406234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3lsaW5zb29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如图Logging流程就包括一个Service Tasks节点Log,用来记录日志输出,在设计流程时我们设计日志输出消息为#{msg},即输出流程中的msg变量。
Logging流程流程运行代码:https://github.com/kylinsoong/.../LoggingStart.java
Logging流程: https://github.com/kylinsoong/.../logging.bpmn
运行org.jbpm.quickstarts.logging.LoopingStart可运行LoggingStart流程,LoggingStart代码如下
如上我们注册WorkItemManager来在运行时完成日志记录工作,jBPM设计的一大特点就是灵活性,本示例我们通过自己实现的日志记录Hander(LoggingWorkItemHandler)来完成运行时日志记录,LoggingWorkItemHandler内容如下:
如上我们自定义的LoggingWorkItemHandler实现了WorkItemHandler接口,日志记录是在executeWorkItem方法中完成,我们使用java.util.logging.Logger完成日志记录,运行LoggingStart会有如下日志输出:
如图Logging流程就包括一个Service Tasks节点Log,用来记录日志输出,在设计流程时我们设计日志输出消息为#{msg},即输出流程中的msg变量。
Logging流程流程运行代码:https://github.com/kylinsoong/.../LoggingStart.java
Logging流程: https://github.com/kylinsoong/.../logging.bpmn
运行org.jbpm.quickstarts.logging.LoopingStart可运行LoggingStart流程,LoggingStart代码如下
package org.jbpm.quickstarts.logging; import java.util.HashMap; import java.util.Map; import org.drools.runtime.StatefulKnowledgeSession; import org.jbpm.quickstarts.QuickStartBase; public class LoggingStart extends QuickStartBase{ public void test() { StatefulKnowledgeSession ksession = createKnowledgeSession("quickstarts/logging.bpmn"); ksession.getWorkItemManager().registerWorkItemHandler("Log", new LoggingWorkItemHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("msg", "Test Logging Message"); ksession.startProcess("org.jbpm.quickstarts.logging", params); } public static void main(String[] args) { new LoggingStart().test(); } }
如上我们注册WorkItemManager来在运行时完成日志记录工作,jBPM设计的一大特点就是灵活性,本示例我们通过自己实现的日志记录Hander(LoggingWorkItemHandler)来完成运行时日志记录,LoggingWorkItemHandler内容如下:
package org.jbpm.quickstarts.logging; import java.util.logging.Logger; import org.drools.process.instance.WorkItemHandler; import org.drools.runtime.process.WorkItem; import org.drools.runtime.process.WorkItemManager; public class LoggingWorkItemHandler implements WorkItemHandler { private static final Logger logger = Logger.getLogger(LoggingWorkItemHandler.class.getName()); public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { logger.info(workItem.toString()); manager.completeWorkItem(workItem.getId(), null); } public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { manager.abortWorkItem(workItem.getId()); } }
如上我们自定义的LoggingWorkItemHandler实现了WorkItemHandler接口,日志记录是在executeWorkItem方法中完成,我们使用java.util.logging.Logger完成日志记录,运行LoggingStart会有如下日志输出:
Oct 29, 2013 2:29:10 PM org.jbpm.quickstarts.logging.LoggingWorkItemHandler executeWorkItem INFO: WorkItem 1 [name=Log, state=0, processInstanceId=1, parameters{Message=Test Logging Message}]
相关文章推荐
- 360随身wifi产品分析
- CrtDumpMemoryLeaks报告程序中的内存泄露问题(简单示例代码)
- 提高PPT操作APM的小技巧
- Jbpm 4.4学习笔记(二)
- ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
- 查看和设置rpm的默认安装路径
- jBPM4.4:ProcessDefinition/ProcessInstance/Execution/Task关系和区别 .
- Jbpm 4.4学习笔记(一)
- Sublime Text 3 配置分析与我的配置
- MTK6573电源管理(PM)小结
- Can't locate ExtUtils/MakeMaker.pm in @INC 错误的解决方式
- JBoss 系列三十四:jBPM5示例之 Looping
- JBoss 系列三十三:jBPM5示例之 HelloWorld
- 揭秘jbpm流程引擎内核设计思想及构架
- 用MPMoviePlayerController播放视频的方法
- MPMoviePlayerController 电影播放器
- 基于OK6410B开发板的PM2.5传感器开发
- 怎样做好一个产品(产品经理须知)
- 工作小结碎碎念(1): FPM for Web Dynpro从零开始
- 使用PopupMenu创建弹出式菜单