首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 第15章. 日志
【标  题】:第15章. 日志
【关键字】:15
【来  源】:http://blog.csdn.net/redbeans/archive/2006/09/29/1306350.aspx

第15章. 日志

第15章. 日志

日志的目的是保持对流程执行的历史的跟踪. 作为流程执行改变的运行时数据, 所有的增量数据都会保存在日志里 .

此章所含盖的流程日志不要同软件日志混淆. 软件日志跟踪软件程序的运行(通常是为了调试的目的). 流程日志跟踪流程实例的执行流程实例.

流程日志信息有多种用途. 最明显的就是咨询特定流程执行的历史.

另外一个用途是业务活动监控(BAM-Business Activity Monitoring). BAM将查询和分析流程执行的日志来发现有用的关于业务流程的统计信息 .比如. 流程每个步骤平均花费了多少时间? 流程的瓶径在那里??在一个组织里这个信息是执行业务流程管理的关键. 真实业务流程管理是关于组织怎样管理它们的流程, 怎样支持信息技术*和*怎么改善迭代过程.

下一个用途是 是取消还原(undo)功能. 流程日志能用来执行取消还原(undo).由于日志包括增量的运行时间信息,日志能够按照相反的顺序把流程带回到以前的状态.

15.1. 日志的创建

当运行流程执行的时候jBPM组件产生日志.用户也能插入流程日志. 日志条目是一个来自继承org.jbpm.logging.log.ProcessLog的java对象. 流程日志条目被加到 LoggingInstance . LoggingInstance是 ProcessInstance的一个可选扩展.

jBPM产生几种日志: 图执行日志,上下文日志和任务管理日志.更多有关这些日志中包含的数据的信息可以参考javadocs. 一个好的开始点是类 org.jbpm.logging.log.ProcessLog,因为从这个类你可以向下导航到继承树 .

LoggingInstance将收集所有的日志条目 . 当 ProcessInstance被保存 ,所有在 LoggingInstance中的日志将刷新到数据库里. ProcessInstance的 logs -field 没有用hiberate映射避免在每个事务里日志从数据库中检索. 每个 ProcessLog在执行路线上下文中( Token)产生并且 ProcessLog引用令牌 . 令牌被用做index-sequence 生成器为了令牌里的 ProcessLog索引 . 这对日志检索是重要的. 这个方法,随后的事务里产生的日志产生将有后面的顺序号. .

对部署来说日志是不重要的, 在ProcessDefinition里去掉额外的 LoggingDefinition是足够的 ?.阻止 LoggingInstance s 被捕捉导致日志没有维护.我们以后将增加更加精细颗粒的日志配置控制 . 参看问题 'log 级别配置'.

增加流程日志?API方法如下.

public class LoggingInstance extends ModuleInstance {  ...  public void addLog(ProcessLog processLog) {...}  ...}

日志信息的UML图如下:

The jBPM logging information class diagram

Figure 15.1.jBPM 日志信息类图

CompositeLog 是特殊类别的日志条目 .它用做数个子日志的父母日志, 因此在日志里建立层级结构.?插入日志API如下

public class LoggingInstance extends ModuleInstance {  ...  public void startCompositeLog(CompositeLog compositeLog) {...}  public void endCompositeLog() {...}  ...}

CompositeLog总是在 try-finally -block中被调用以确保层级结构日志是一致的. 比如:

startCompositeLog(new MyCompositeLog());try {  ...} finally {  endCompositeLog();}

15.2. 日志检索Log retrieval

如前所说,日志不能通过LoggingInstance?导航到它的日志来从数据库中检索.作为替代,流程实例日志总是从数据库中查询. LoggingSession有两个方法用做这个目的 .

第一个方法检索所有流程实例的日志.这些日志将被令牌组织成一个Map. 此map将通过流程实例的每个令牌关联到ProcessLogs列表。清单包含ProcessLogs 同它们建立的顺序一样.

public class LoggingSession {  ...  public Map findLogsByProcessInstance(long processInstanceId) {...}  ...}

第二个方法检索指定的令牌的日志. 结果列表包括ProcessLogs,同它们建立的顺序一样.

public class LoggingSession {  public List findLogsByToken(long tokenId) {...}  ...}

15.3. 数据仓库

有时你可能想将数据仓库技术应用到jbpm流程日志上.数据仓库意思是你可为各种不同目的的流程日志建立隔离的数据库.

为什么你想为jBPM 日志创建数据仓库可能有很多原因。有时可能从使用的生产数据库产生沉重的查询. 其他状态可能做一些扩展分析. 数据仓库可以在一个为此目的而优化的编辑数据库schema上完成。

本章,我们只是推荐了数据仓库技术. 目的是多变的,jBPM里包含的通用解决方案可以覆盖这些需求.

JAVA中按字节截取字符串:【上一篇】
第14章. 商务日历:【下一篇】
【相关文章】
  • 使用apache2.0.57+tomcat5.5.9+mod_jk_1.2.15配置tomcat集群
  • ST32105N ST32107N ST32109N ST32151N ST32155N
  • 错误号ORA-01536:space quota exceeded for table space
  • 第15回 回归测试的风险性和有效性之平衡策略
  • 编程交流与学习--More Effective C++的学习-Item M15:了解异常处理的系统开销
  • ISP1581型接口电路的USB2.0接口设计
  • [asp.net1.1]Inproc->StateServer 9/15
  • 2006.09.15 pass SUN-310-044网络管理员认证考试,纪念
  • C语言-编程实例-经典C程序100例(11----15)
  • 第 15 章 外设总线综述
  • 【随机文章】
  • Lotus 654在AIX5.3上的安装文档
  • 最简单的Shockwave播放器(VC6)
  • Flash游戏制作--记忆游戏
  • 合理的软件过程是软件质量的基础-论CMM/CMMI的缺点
  • thinking in c++ 读书笔记---集合初始化
  • How to find MAC address?
  • 事情搞大了 —— 从11月起暂停交纳住房贷款
  • IT企业该如何建立更好的病毒防护体系
  • QQ2005最新应用小技巧
  • 251451 双口多网络电缆测试仪
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.