jbpm4.0:jBPM-4.0中文开发指南-第11章 环境

  第 11 章 环境

   11.1. 介绍

   环境组件由连接环境组合是种控制反转(IoC)容器 它读取配置信息 描述对象应该如何例子化如何配置如何连接在

   环境被用来获得Activity实现 和流程虚拟机所需资源和服务 主要目是让流程虚拟机多个部分可配置 这样PVM和运行在顶部语言可以工作在个标准Java环境 也可以在个企业Java环境

   环境被分成系列环境 每个环境可以拥有自己生命周期比如流程引擎环境会 覆盖应用全生命时间块环境只对try-finally块周期内起作用 个块环境负责个数据库事务 每个环境暴露个key-value列表 pairs.

   11.2. EnvironmentFactory

   为了开始和个环境进行工作你需要个EnvironmentFactory. 个单独环境工厂对象可以被用在整个应用完整生命时间里 所以般这会保存在个静态成员变量中 EnvironmentFactory自己在流程引擎环境中

   个EnvironmentFactory般被获得 通过解析个配置文件像这样:

EnvironmentFactory environmentFactory =
        EnvironmentFactory.parse( ResourceStreamSource("pvm.cfg.xml");


   参考javadocs包org.jbpm.stream获得流源更多类型

   这是个环境工厂中默认解析器 会创建DefaultEnvironmentFactory. 这个主意是我们也会支持spring作为Ioc容器但是这还处于TODO状态 很欢迎大家在这方面帮助我们:-)这个解析器可以使用静态ter思路方法配置 EnvironmentFactory.Parser(Parser)

   11.3. 环境块

   个环境为try-finally块范围而存在 这是个环境块看起来像怎样:

Environment environment = environmentFactory.openEnvironment;
try {

  ...

} finally {
  environment.close;
}


   环境块定义了另个生命部分:block环境 个事务可以个定义在块环境中对象 常用例子

   在这样个块中对象可以通过名称或类型在环境中查找到 如果对象可以从环境中通过environment.get(String name) 或<T> T environment.get(Class<T>) 找到

   当个环境被创建时它拥有个process-engine环境 和个block 环境

   在默认实现中process-engine环境和 block环境是WireContext. 个WireContext包含对象如何创建和 如果绑定到正式对象图中

  11.4. 例子

   为了启动简单例子我们会需要个Book:

public Book {
  ...
  public Book {}
  ...
}


   然后让我们创建个环境工厂知道如何创建book

EnvironmentFactory environmentFactory = EnvironmentFactory.parseXmlString(
    "<jbpm-configuration>" +
    "  <process-engine>" +
    "    <object name='book' ='org.jbpm.examples.ch09.Book' />" +
    "  </process-engine>" +
    "</jbpm-configuration>"
));


   现在我们会创建个环境块使用这个环境工厂 我们会查找环境中book. 第次会使用类型查找第 2次会使用名称查找

Environment environment = environmentFactory.openEnvironment;
try {

  Book book = environment.get(Book.);
  assertNotNull(book);

  assertSame(book, environment.get("book"));

} finally {
  environment.close;
}


   为了防止这样你需要把环境作为个参数传递给所有思路方法 当前环境被维护在个threadlocal栈中:

  Environment environment = Environment.getCurrent;

   11.5. 环境

   环境可以动态被添加和删除 任何东西都可以暴露为个Context.

public erface Context {

  Object get(String key);
  <T> T get(Class<T> type);
  Set<String> keys;

  ...
}


   当在环境中执行次查找这里有个默认搜索次序 哪些环境会为请求对象检测 默认次序和环境添加顺序相反 比如如果个对象被定义在流程引擎环境和块环境中 块环境被认为更适用会被首先检测 可选个默认搜索次序可以被传递给get 作为个可选参数

Tags:  jbpm环境搭建 jbpm4.0

延伸阅读

最新评论

发表评论