shark工作流程原始碼學習(一)

來源:互聯網
上載者:User

org.enhydra.shark.SharkEngineManager

 

SharkEngineManager是shark引擎的控制室,它在shark引擎內部使用,shark引擎的所有管理器都是由它產生的。

SharkEngineManager使用了singleton模式,保證整個系統只有一個它的instance

// the one and only instance of this class

   private static SharkEngineManager engineManager;

 

   static SharkEngineManager getInstance () {

      if (engineManager==null) {

         engineManager=new SharkEngineManager();

      }

      return engineManager;

   }

 

SharkEngineManager的所有get()方法的作用都是返回初始化時執行個體化的管理器,這些管理器也是singleton的,這樣通過一個類,實現了無限個類的singleton模式,這在我們平常的系統中可以借鑒。

 

當系統啟動時,將調用Shark.conf()進行系統的配置,配置時將調用SharkEngineManager的init (Properties properties)方法,該方法樣本如下:

void init (Properties properties) {       

          String objectFactoryClassName=properties.getProperty

         ("ObjectFactoryClassName",

          "org.enhydra.shark.SharkObjectFactory");     

 

      String amClassName =properties.getProperty

         ("AssignmentManagerClassName");

   …………

}

如上所示,首先從properties中讀ObjectFactoryClassName,如果有,則使用設定檔中的;如果沒有,則用org.enhydra.shark.SharkObjectFactory。AssignmentManagerClassName也是從設定檔中讀的。

 

Init()的下一步是用讀到的配置或用預設的配置將各管理器執行個體化,在後面運行時直接取用,如下:

try {

         callbackUtilities=(CallbackUtil)cl.loadClass(cbuClassName).newInstance();

callbackUtilities.setProperties(properties);

         objectFactory =(SharkObjectFactory)cl.loadClass(objectFactoryClassName).newInstance();

         toolAgentManager = (ToolAgentManager) cl.loadClass(tamClassName).newInstance();

         xmlInterface=new XMLInterfaceForJDK13();

      } catch (Throwable ex) {

         throw new Error("Problems instantiating core managers");

      }

當然了,這裡返回的都是介面,所以,我們可以方便的擴充它,只要寫自己的類繼承這些介面,然後在設定檔中進行配置,就可以不動它的代碼而達到擴充的目的。

 

hongbo781202,又名HongSoft,職業程式員,研究領域:1)基於工作流程的BPM系統研究2)基於JAVA的資訊安全

技術.http://blog.csdn.net/hongbo781202/

 hongbosoftware@163.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.