程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> web工作流管理系統開發之數據庫連接及事務設定

web工作流管理系統開發之數據庫連接及事務設定

編輯:.NET實例教程

為了方便設置數據庫連接和事務的一致,將所有數據庫連接信息統一設置在fcconfig.XML文件中;

  fcconfig.XML的內容:

<?XML version="1.0" encoding="utf-8"?>
<root>
 <datasources>
  <ds name="fhjtest" dbType="sqlserver"
   type="jdbc" jdbcDriver="com.newatlanta.jturbo.driver.Driver" jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK" user="sa" passWord="" />
  <ds name="ebsql" dbType="sqlserver"
   type="jdbc" jdbcDriver="com.newatlanta.jturbo.driver.Driver" jdbcUrl="jdbc:JTurbo://localhost/ebtest/charset=GBK" user="sa" passWord="" />
  <ds name="eformsql" dbType="sqlserver"
   type="jdbc" jdbcDriver="com.newatlanta.jturbo.driver.Driver" jdbcUrl="jdbc:JTurbo://localhost/eformtest/charset=GBK" user="sa" passWord="" />
  <ds name="eboracle" dbType="Oracle"
   type="jdbc" jdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcUrl="jdbc:oracle:thin:@localhost:1521:sys" user="eboracle" passWord="ebOracle" />
  <ds name="eformoracle" dbType="Oracle"
   type="jdbc" jdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcUrl="jdbc:Oracle:thin:@localhost:1521:sys" user="eformtest" passWord="eformtest" />
   
 </datasources>
 <fileroot>/ebsys</fileroot>
 <pubparam>用戶.ID,用戶.名稱,部門.ID,部門.名稱,系統.單位名稱</pubparam>
</root>

  其中<datasources></datasources>節點中可以設置多個數據源連接

  e表、eform或工作流系統默認均是取第一個<ds>的連接串信息。

  這樣設置的好處有兩方面:

  1、通過修改這個文件可以將開發庫,測試庫,運行的正式庫分開;比如,開發用一套庫,測試用一套庫,正式運行的時候設置jndi的數據庫連接;

  2、可以在同一套系統中同時使用多數據源:比如,操作請求中指定數據源的name,就可以使用指定的數據源,不指定的使用默認的數據源,達到一套系統使用多數據源。

  代碼實現過程:

  一次性讀出fcconfig.XML文件的配置信息;

  可以用單例模式一次讀出;

  也可以通過servlet的init()一次讀出(工作流中采用的是這種方法);

  在需要建立數據庫連接的時候,根據傳入的datasourcename ,建立數據庫連接;不傳入datasourcename則取第一個;

  數據庫事務的一致性設定:

  工作流系統eworkflow中業務系統自定義模塊用eform自定義表單來實現,流程的遞進有單獨的工作流引擎;

  當流程實例運行時,必須要求業務數據的保存和流程的遞進 保持在一個事務中,即當一個提交的環節失敗後,業務數據和流程都回滾;

  這就必須要求,eform表單的提交和工作流實例的遞進保持在同一個事務中:

  實現過程:

  單獨設置一個Environment.Java類:

  此類負責調用ConnectionConfig.Java,創建數據庫連接,每獲得一個conn後,開啟事務。並提供提交關閉方法和事務回滾方法;

  在流程實例的遞進提交前,建立Environment的實例,將Environment 的實例傳遞到eform引擎和工作流eworkflow引擎中,在需要數據庫連接的時候,從Environment實例中獲得一個,開啟事務;如果有異常拋出則調用Environment實例的回滾;

  當業務數據保存和流程的保存都完成後,再調用Environment實例的提交關閉;提交數據和將數據庫連接關閉。

  這樣就達到了流程數據與業務數據保持一致。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved