`
xxp3369
  • 浏览: 152333 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oa_17

阅读更多
集成JBPM到OA系统,并实现JbpmFacade接口

- 第一步:创建数据库表
* 拷贝依赖包:bsh.jar/jcr-1.0.jar/jbpm-identity.jar/jbpm-jpdl.jar
* 修改hibernate.cfg.xml,添加JBPM的映射配置,以及缓存属性的配置
- 拷贝JBPM中的hibernate配置文件到当前项目
- 修改build.xml文件,在"生成Hibernate配置文件"的任务中,添加一个属性:
  mergecfgxml="${basedir}/hibernate_for_jbpm.cfg.xml"
* 因为JBPM中的User类与OA系统中的User类在名称上有冲突,所以需要修改OA
  系统中的User类的auto-import="false",并更改查询User对象的HQL语句,加上
  全路径的类名进行查找,可以参考UserManagerImpl类。
- 第二步:与spring集成
* 集成spring与JBPM,需要用到第三方的类库:spring-modules-0.8.zip
* 将其中的spring-modules-jbpm31.jar拷贝到web-inf/lib下面即可
* 集成JBPM与spring的方法是:将JbpmConfiguration对象交给spring来创建
* 所以,需要在spring配置文件里面配置JbpmConfiguration对象的创建
<bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="configuration" value="classpath:jbpm.cfg.xml"></property>
</bean>
* 这个时候,需要拷贝jbpm.cfg.xml到类路径中
(可以从jbpm-jpdl-3.2.GA\src\jpdl\org\jbpm目录中拷贝(default.jbpm.cfg.xml)文件,
并重命名即可)
- 第三步:如何实现业务逻辑类
* 用到jbpmConfiguration的时候,需要注入
* 当我们使用jbpmContext对象来操纵JBPM的时候,需要将JbpmContext内部的Hibernate session对象设置为当前的
  hibernate session对象。
  private JbpmContext getJbpmContext(){
JbpmContext context = jbpmConfiguration.createJbpmContext();
context.setSession(getSession());
return context;
}
* 当我们使用jbpmContext操纵JBPM数据结束的时候,注意不要关闭jbpmContext!!


hibernate_for_jbpm.cfg.xml

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>

    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

    <!-- DataSource properties (begin) ===
    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
    ==== DataSource properties (end) -->
    
    <!-- JTA transaction properties (begin) ===
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
    ==== JTA transaction properties (end) -->

    <!-- CMT transaction properties (begin) ===
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
    ==== CMT transaction properties (end) -->

    <!-- logging properties (begin) ===
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <property name="hibernate.use_sql_comments">true</property>
    ==== logging properties (end) -->
    
    <!-- ############################################ -->
    <!-- # mapping files with external dependencies # -->
    <!-- ############################################ -->

    <!-- following mapping file has a dependendy on   -->
    <!-- 'bsh-{version}.jar'.                         -->
    <!-- uncomment this if you don't have bsh on your -->
    <!-- classpath.  you won't be able to use the     -->
    <!-- script element in process definition files   -->
    <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>

    <!-- following mapping files have a dependendy on  -->
    <!-- 'jbpm-identity.jar', mapping files            -->
    <!-- of the pluggable jbpm identity component.     -->
    <!-- Uncomment the following 3 lines if you        -->
    <!-- want to use the jBPM identity mgmgt           -->
    <!-- component.                                    -->
    <!-- identity mappings (begin) -->
    <mapping resource="org/jbpm/identity/User.hbm.xml"/>
    <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
    <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
    <!-- identity mappings (end) -->
    
    <!-- following mapping files have a dependendy on  -->
    <!-- the JCR API                                   -->
    <!-- jcr mappings (begin) ===
    <mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
    ==== jcr mappings (end) -->


    <!-- ###################### -->
    <!-- # jbpm mapping files # -->
    <!-- ###################### -->

    <!-- hql queries and type defs -->
    <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
    
    <!-- graph.def mapping files -->
    <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
    <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
    <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>

    <!-- graph.node mapping files -->
    <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
    <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>

    <!-- context.def mapping files -->
    <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
    <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>

    <!-- taskmgmt.def mapping files -->
    <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>

    <!-- module.def mapping files -->
    <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>

    <!-- bytes mapping files -->
    <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>

    <!-- file.def mapping files -->
    <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>

    <!-- scheduler.def mapping files -->
    <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
    <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>

    <!-- graph.exe mapping files -->
    <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
    <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
    <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
    <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>

    <!-- module.exe mapping files -->
    <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
        
    <!-- context.exe mapping files -->
    <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
    <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>

    <!-- job mapping files -->
    <mapping resource="org/jbpm/job/Job.hbm.xml"/>
    <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
    <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
    <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>

    <!-- taskmgmt.exe mapping files -->
    <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>

    <!-- logging mapping files -->
    <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
    <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
    <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
    <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
    
  </session-factory>
</hibernate-configuration>


<jbpm-configuration>

  <!-- 
    This configuration is used when there is no jbpm.cfg.xml file found in the 
    root of the classpath.  It is a very basic configuration without persistence
    and message services.  Only the authorization service installed.
    You can parse and create processes, but when you try to use one of the 
    unavailable services, you'll get an exception.
  -->
  
  <jbpm-context>
    <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
    <service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
    <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
    <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
    <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
    <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
  </jbpm-context>

  <!-- configuration property used by persistence service impl org.jbpm.persistence.db.DbPersistenceServiceFactory -->
  <string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml" />

  <!-- configuration resource files pointing to default configuration files in jbpm-{version}.jar -->
  <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties" />
  <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties" />
  <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties" />
  <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml" />
  <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml" />
  <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
  <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml" />
  <string name="resource.mail.templates" value="jbpm.mail.templates.xml" />

  <int    name="jbpm.byte.block.size" value="1024" singleton="true" />
  <string name="jbpm.mail.smtp.host" value="localhost" />
  <bean   name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl" singleton="true" />
  <bean   name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true" />
  <bean   name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true" />
  
  <bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
    <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
    <field name="name"><string value="JbpmJobExector" /></field>
    <field name="nbrOfThreads"><int value="1" /></field>
    <field name="idleInterval"><int value="5000" /></field>
    <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
    <field name="historyMaxSize"><int value="20" /></field>
    <field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
    <field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
    <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
  </bean>

</jbpm-configuration>
分享到:
评论

相关推荐

    abon_oa_代码需求1

    17. **系统权限**:一个公司有一个超级管理员,负责管理所有权限,这是系统权限模型的核心。 18. **学习借鉴**:开发人员应从其他CMS或程序中汲取灵感,优化代码质量。 19. **严谨的逻辑判断**:在编写业务逻辑时...

    Automotive_Ethernet_ECU_TestSpecification_v2.0_TC8_ECU_TEST

    《车载以太网ECU测试规范v2.0 TC8 ECU测试》是针对汽车电子控制单元(ECU)在采用以太网通信技术时的一种详细测试标准。这份规范涵盖了从物理层到高层协议,包括TCP/IP协议栈和SOME/IP(Systematic Mapping of ...

    OA_ICESat2_guide.pdf

    《OA_ICESat2_guide.pdf》使用说明详细解读 该文档是关于如何使用开放测高系统(OpenAltimetry)的指南,特别是针对ICESat-2(冰川卫星2号)的数据处理和分析。ICESat-2是美国国家航空航天局(NASA)发射的一颗卫星...

    Using Origin from LabVIEW.pdf

    17. **OA_NewWorksheet**:创建新的工作表。 18. **OA_OpenNewOrigin**:启动新的Origin实例。 19. **OA_PE_mkdir**:在Origin项目目录下创建新目录。 20. **OA_PlotWksCols**:根据工作表中的列绘制图形。 21. **OA...

    车载以太网测试规范及标准文档

    车载以太网是一种在汽车行业中广泛应用的通信技术,它提供了高速、低延迟的数据传输能力,为汽车内部的各种电子控制单元(ECU)和车载信息系统之间的通信提供了高效平台。TC8,全称为“Technical Committee 8”,是...

    100Base-T1_Transceiver EMC Specification_v1.0_17.pdf

    用于评估车载以太网收发器的EMC性能,包含收发器芯片的软件配置、测试设备、测试布置、测试要求等等多个方面。包括辐射发射RE、辐射抗扰RI、传导抗扰、ESD等4项测试项目。用来评估以太网收发器是否符合IEEE规范

    西门子winccOA兼容性查询SIMATIC-WinCC-OA-compatibility-list-zh

    例如,提供的文件"SIMATIC-WinCC-OA_V3.19_compatibility-list_zh_2023-03-29.xlsx"和"SIMATIC-WinCC-OA_V3.18_compatibility-list_zh_2022-11-17.xlsx"分别对应了2023年3月29日和2022年11月17日的WinCC OA V3.19和V...

    泛微OA 8.0 数据字典

    泛微OA 8.0 数据字典,仅供参考 号 表名 中文名称 表类型 说明 1 outerdatawfdetail 输出数据流程详情表 2 outerdatawfperiodset 外部数据触发周期设置表 3 outerdatawfset 外部数据触发设置表 4 ...

    泛微OA遇上云,OA厂商的云端化布局

    根据市场研究机构IDC发布的报告,2014年中国公有云服务市场整体规模达到了7.17亿美元,预计在2015年至2018年间将以年均复合增长率33.2%的速度高速增长。这表明,云OA市场拥有巨大的发展潜力。 在此背景下,多家知名...

    泛微OA数据库相关问题处理

    17. SQLServer 查看查询最耗 IO 资源的 SQL 在SQLSERVER数据库中,可以使用sys.dm_exec_query_stats视图来查看最耗IO资源的SQL,例如: ```sql SELECT * FROM sys.dm_exec_query_stats; ``` 这个视图可以显示最耗...

    通达OA数据字典查看器15-16-17版适用

    "通达OA数据字典查看器15-16-17版适用"是一个专门针对通达OA特定版本的数据查看工具,主要服务于对系统内部数据结构和配置有需求的用户,如管理员或技术支持人员。 数据字典在信息系统中起着至关重要的作用,它记录...

    通达OA同步中控

    17. { ... ``` 这段代码首先引入了必要的库文件,然后连接到Access数据库并执行SQL查询来获取考勤记录。接着,它遍历查询结果,查找匹配的用户ID,并将其与通达OA中的用户信息进行关联。在处理时间格式后,数据会...

    2011-06-17日破解版-通达OA2010破解版-同步官方自动升级程序

    通达OA2010 3.6 110610 补丁自动升级-纯净版(含全套热门组件破解版本)——通达OA2010完美平台版最新OA补丁集成“OA破解补丁、通达即时通讯服务器版本IM、OA精灵 去官方链接及去除通达官方相关信息版(通达OA精灵去...

    SpringBoot JAVA 开源OA协同办公系统

    本项目自2020-08-17日起,为全面支持mysql8以上版本,Oracle,启用SpringBoot 2.3x的版本。支持jasperreport报表系统。 本项目权限管理可控制页面、接口、数据操作。 目前系统已全面支持国产达梦数据库8.0,人大...

    伟峰OA提供集团公司OA系统方案

    **17. 后台管理**:提供后台管理系统,便于管理员进行数据管理、用户管理等工作。 #### 五、其他需求满足程度 **1. 门户**:支持构建企业内部门户,作为信息展示和服务集成的中心。 **2. 文件同步**:支持多终端...

    OA系统说明书共17页.pdf.zip

    很抱歉,根据您提供的信息,"OA系统说明书共17页.pdf.zip" 是一个压缩文件,通常用于存储多个文档或文件。然而,由于没有实际的文件内容,我无法提供具体的OA系统相关的详细知识点。不过,我可以基于一般性的OA...

    最新微信企业OA源码,微信移动OA办公,含CRM+进销存等.zip

    《微信企业OA源码解析与应用探讨》 微信企业OA(Office Automation)源码是针对企业内部管理和协作的数字化解决方案,结合微信的便捷性,实现移动化的办公自动化系统。本篇将深入探讨这一主题,包括微信平台的安装...

    泛微OA系统表结构说明文档(20161121135308).pdf

    17. SendDoc相关的表:涉及文档发送和相关详情记录,如发送人、发送时间、发送内容等。 18. User相关的表:用户模块,包括用户的个人信息、默认设置、自定义字段、视图和下载日志等。 19. VotingViewer:投票查看...

Global site tag (gtag.js) - Google Analytics