`
eworkflow
  • 浏览: 213670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

web工作流管理系统开发之十 数据库连接及事务设定

阅读更多

为了方便设置数据库连接和事务的一致,将所有数据库连接信息统一设置在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" />
   

  <ds name="ewjndi" dbType="oracle"
   type="jndi" jndiName="jdbc/eworkflow" jndiPrefix="java:comp/env" /> 

 

 </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实例的提交关闭;提交数据和将数据库连接关闭。

       

   这样就达到了流程数据与业务数据保持一致。

 

 

 

 

 

 

 

相关连接

web工作流管理系统开发之一 工作流概念

web工作流管理系统开发之二 工作流引擎
web工作流管理系统开发之三 可视化流程设计器
web工作流管理系统开发之四 集成工作流与自定义表单
web工作流管理系统开发之五 开源osworkflow之用户系统改造

web工作流管理系统开发之六 表单权限与流程的权限控制

web工作流管理系统开发之七 最新修改的版本下载 

web工作流管理系统开发之八 开源osworkflow之任务管理 

2
0
分享到:
评论

相关推荐

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。SQL Server 2000是Microsoft公司于2000年推出的最新版本。 SQL Server 特点:  1....

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...

    Spring3.x企业应用开发实战(完整版) part1

    16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成Hibernate 16.4.4 集成Dbunit 16.4.5 自定义扩展模块 16.5 使用Unitils...

    Spring.3.x企业应用开发实战(完整版).part2

    16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成Hibernate 16.4.4 集成Dbunit 16.4.5 自定义扩展模块 16.5 使用Unitils...

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java源码包3

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java源码包4

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    华蜀网络办公自动化管理系统

    &lt;br&gt;智能工作流  强大的工作流功能,无需专门技术即可方便的设定各种简单到复杂的企业工作流程,支持多人,自定义流程,流程委办,流程到达提醒,流程查询、归档等多种特性。 &lt;br&gt;组织定义  可设定...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    db2数据库入门教程(官方中文版)

    2.2.4工作负载管理(Workload Management, WLM) .......................................................24 2.3 DB2相关收费产品.................................................................................

Global site tag (gtag.js) - Google Analytics