网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
jBPM-4.0中文开发指南-第11章 环境
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/30
下载{$ArticleTitle}原创论文样式

  第 11 章 环境

   11.1. 简介

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

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

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

   11.2. EnvironmentFactory

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

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

static EnvironmentFactory environmentFactory =
        EnvironmentFactory.parse(new ResourceStreamSource("pvm.cfg.XML");

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

   这是一个环境工厂中的默认解析器, 会创建DefaultEnvironmentFactory. 这个主意是我们也会支持spring作为Ioc容器,但是这还处于TODO状态。 很欢迎大家在这方面帮助我们:-)。这个解析器可以使用静态setter方法配置 EnvironmentFactory.setParser(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 class Book {
  ...
  public Book() {}
  ...
}

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

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

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

Environment environment = environmentFactory.openEnvironment();
try {

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

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

} finally {
  environment.close();
}

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

  Environment environment = Environment.getCurrent();

   11.5. 环境

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

public interface Context {

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

  ...
}

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

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号