第 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(); Book book = environment.get(Book.class); assertSame(book, environment.get("book")); } finally { |
為了防止這樣,你需要把環境作為一個參數傳遞給所有方法, 當前的環境被維護在一個threadlocal棧中:
Environment environment = Environment.getCurrent(); |
11.5. 環境
環境可以動態被添加和刪除. 任何東西都可以暴露為一個Context.
public interface Context { Object get(String key); ... |
[火星人 ] jBPM-4.0中文開發指南-第11章 環境已經有449次圍觀