jBPM详解_工作流管理系统


    
    J2EE工作流理系统jBPM详解〔〕
    jBPM入门简介
    概述
    工作流业务流程理技术基SOA技术实现核心局部工作流够软件开发业务两层次受益:
    1方便开发
    工作流理系统够简化企业级软件开发甚维护
    ◆降低开发风险 通状态动作样术语业务分析师开发员种语言交谈样开发员必户需求转化成软件设计 
    ◆实现集中统 业务流程常变化工作流系统处:业务流程实现代码散落种样系统中  
    ◆加快应开发 软件关注流程参者开发起更快代码更容易维护
    2业务流程理 〔BPM〕
    动化业务流程前分析规格化件艰苦会回报工作:
    ◆提高效率 许流程动化程中会必步骤较流程控制 通标准工作方法踪审计提高业务流程理
    ◆改良客户效劳 流程致性提高客户响应预见性 
    ◆灵活 跨越流程软件控制流程业务需重新设计 
    ◆业务流程改良 流程关注趋流畅简单
    长远角度工作流流程理技术研究两阶段进行:1目前解决华研新工程中复杂业务流程工作流引擎技术进行实现问题
    2升面效劳体系架构实现效劳间业务流程
    jBPM全称Java Business Process Management种基J2EE轻量级工作流理系统jBPM公开源代码工程遵循 Apache License
    jBPM2004年10月18日发布20版天参加JBoss成JBoss企业中间件台组成局部名称改成JBoss jBPM着jBPM参加JBoss组织jBPM进入全新开展时代前景十分光明
    JBoss jBPM 倚赖性容易作java库然访问量J2EE 群应效劳器环境中 JBoss jBPM 数库配置部署应效劳器
    jBPM 特色商务逻辑定义没采目前标准WfMC XPDL BPML ebXML BPEL4WS等采定义JBoss jBPM Process definition language 〔jPdl〕jPdl认商务流程作UML状态图jPdl详细定义状态图局部起始结束状态状态间转换等
    jBPM特色Hibernate理数库Hibernate目前Java领域种数持久层解决方案通HibernatejBPM数理职离出专注商务逻辑处理〔具体选型报告参考工作流技术选型评估报告〕
    文档工作流研究组关开源工作流引擎jbpm研究成果总结容包括工作流研究场景介绍jbpm环境配置包括六研究题:
    ◆JBPM开发结合保持独立性应系统设计实现什样制约
    ◆户角色应系统结合变化处理
    ◆流程中活动动态指定执行者
    ◆类似传阅功实现
    ◆子流程实现
    ◆流程执行步骤耗时阀值动提醒设置
    ◆jBPM前版稳定性评估
    术语定义缩略语

    应场景
    场景房产营销系统需求中提取出房产工程中客户选户购房程非常典型工作流场景程提取出作jbpm技术研究场景
    购房程中会员参
    客户:购房体
    销售员:购房程中指导房购房
    销售理:确定认购信息
    财务员:收取定金
    客服员:印收印客户认购书
    客户购房程描述
    ◆客户售楼中心销售员进行接
    ◆客户销售员提供预先申请效劳号
    ◆销售员确认效劳号否效果效现场出新效劳号
    ◆销售员引导客户选房
    ◆客户确定户型房号
    ◆销售员录入客户认购资料
    ◆销售员确认认购资料填写完整
    ◆销售员认购资料提交销售理审批
    ◆确定否获优惠果客户次交清房款获01优惠
    ◆交级理审批 
    ◆销售员引导客户财务处交纳定金
    ◆交纳定金客服员印收
    ◆客服员印认购书
    研究场景更代表性揉合典型工作流应场景面流程作删改
    客户认购流程改:
    ◆客户确定购房销售员录入认购资料
    ◆提交认购资料必须保证录入资料完整性
    ◆提交审核总金额进行分类审核果金额50万销售理审核50万级理两时审核通
    ◆审批完成客户财务处交纳定金
    ◆客服员客户印收印认购书认购完成


    面流程中异常情况(流程中分支)里先作考虑客户交纳定金前时放弃认购
    客户认购录入资料容包括:客户姓名房号定金总金额流程号等里仅选取重数作保存象保存录入资料时动取流程号时候根流程号踪流程状态保存认购资料时记录流程号

    通标准标准

    jBPM 功全面Workflow Engine融合4功:WorkflowBPMBPELPageFlowBPEL扩展采jboss Hibernate实现定义定义标准jpdl支持目前公开工作流〔业务流程〕标准
    ◆JCP
    ◆JSR208 Java Business Integration
    ◆JSR207 Process Definition for Java 
    ◆OASIS
    ◆WSBPEL
    ◆Workflow Management Coalition(WFMC)
    ◆WFMC XPDL
    ◆Business Process Management Initiative (BPMI)
    ◆BPMN
    ◆Object Management Group (OMG)
    ◆State Chart XML (SCXML)
    处理测试阶段JBoss jBPM BPEL扩展准备支持BPEL 11标准(非标准组织通标准)
    技术方案

    公司采取架构ejb3+tapestry4架构场景实现架构基架构进行实现〔tapestry4+ejb3+jbpm32〕采取jbpm版32目前jbpm新版里jboss作web效劳器
    开发环境
     
    里采eclipse32开发工具进行开发Tapestry4+ejb3开发环境配置工程配置根保持致里进行详细介绍关键jbpm32配置方法
    jBoss官方网站( jbossorg)载jbpmjpdlsuite32GAzip新版32GA包括  
    ◆jbpmserver 预先配置jboss 应效劳器 
    ◆jbpmdesigner jBPM流程图形化设计器eclipse 插件   
    ◆jbpmdb jBPM 数库兼容包 (参面) 
    ◆jbpm 核心jbpm组件包括库户手册 
    ◆jbpmbpel JBoss jBPM BPEL 扩展参考
    预配置JBoss 应效劳器安装组件 
    核心jBPM 组件 包作JBoss效劳档案
    包括jBPM 表格完整数库 默认 hypersonic 数库包含jBPM 表格已定义流程
    jBPM 控制台web应程序 jBPM理员

    jBPM调度程序 定时器执行 调度程序新手工具箱里配置成servletServlet会产生线程监视定时器执行
    流程例子 已发布进jBPM 数库关jbpmjpdlsuite32套件包具体介绍参考JBoss jBPM Cookbook手册
    JBoss jBPM Java库 java环境方web 应程序Swing应程序EJBWeb Service等等JBoss jBPM 核心组件包成简单Java库文件赖功性 库 jbpmjpdljar相关第三方库方 hibernate32 dom4j 等等
    实现场景中jbpm首先需jbpm32包导入工程中 jbpm32包括两包jbpmjpdljarjbpmidentityjarjbpmjpdljarjbpm核心包jbpmidentityjarjbpm带户角色权限理包两包导入工程中〔具体参考jbpm户手册〕
    jbpm中流程定义编写xml文件中需具体业务流程xml中定义需工程根目录新建源目录里命名processes〞该目录保存流程定义xml文件
    JBoss jBPM 包括图形化流程设计工具 设计器创作商业流程该图形设计器Eclipse插件图形化设计工具重特性时支持业务分析员技术开发员 样业务流程建模实际执行间滑转换该插件通界面拖拉描绘业务流程需手写编码设计该插件位jbpmjpdlsuite32GAzip中插件安装方法参考elipse插件安装方法安装完毕面通该插件新建流程设计文件
    步骤:1processes目录中右建选择New〞—other〞

    2选择Process Definition〞点击Next〞

    输入Process name点击完成翻开设计界面面根业务设计工作流流程文件

    Jbpm身包含jbpm数库表jBPM部hibernate理数库通HibernatejBPM数理职离出专注商务逻辑处理jBPM移植数库进行步流程操作保存jbpm数表中通调jbpm提供接口jBPM数库进行存储更新检索流程信息效劳里Mysql50数库面工程中新建源目录configfiles〞名字意该目录建立hibernatecfgxml文件:

    <xml version'10' encoding'utf8'>

    <DOCTYPE hibernateconfiguration PUBLIC
    HibernateHibernate Configuration DTD 30EN
    hibernatesourceforgenethibernateconfiguration30dtd>

    <hibernateconfiguration>
    <sessionfactory>

    < hibernate dialect >
    <property namehibernatedialect>orghibernatedialectHSQLDialect<property>
    <property namehibernatedialect>

    <property>

    < JDBC connection properties (begin)
    <property namehibernateconnectiondriver_class>orghsqldbjdbcDriver<property>
    <property namehibernateconnectionurl>jdbchsqldbmemjbpm<property>
    <property namehibernateconnectionusername>sa<property>
    <property namehibernateconnectionpassword><property>
    JDBC connection properties (end) >

    < JDBC connection for MySQL database >
    <property nameconnectiondriver_class>

    <property>
    <property nameconnectionurl>
    jdbcmysqllocalhostmyjbpm
    <property>
    <property nameconnectionusername>root<property>
    <property nameconnectionpassword>1234<property>

    < JDBC connection pool (use the builtin) >
    <property nameconnectionpool_size>1<property>

    <property namehibernatecacheprovider_class>

    <property>

    < use data source >
    < DataSource properties (begin)
    <property namehibernateconnectiondatasource>
    javacompenvJbpmDS<property>
    DataSource properties (end) >

    < Drop and recreate the database schema on startup >
    <property namehbm2ddlauto>create<property>

    < JTA transaction properties (begin)
    <property namehibernatetransactionfactory_class>
    orghibernatetransactionJTATransactionFactory<property>
    <property namehibernatetransactionmanager_lookup_class>
    onJBossTransactionManagerLookup<property>
    JTA transaction properties (end) >

    < CMT transaction properties (begin)
    <property namehibernatetransactionfactory_class>
    orghibernatetransactionCMTTransactionFactory<property>
    <property namehibernatetransactionmanager_lookup_class>
    orghibernatetransactionJBossTransactionManagerLookup<property>
    CMT transaction properties (end) >

    < logging properties (begin)
    <property namehibernateshow_sql>true<property>
    <property namehibernateformat_sql>true<property>
    <property namehibernateuse_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 resourceorgjbpmgraphactionScripthbmxml >

    < following mapping files have a dependendy on >
    < 'jbpmidentityjar' 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 resourceorgjbpmidentityUserhbmxml >
    <mapping resourceorgjbpmidentityGrouphbmxml >
    <mapping resourceorgjbpmidentityMembershiphbmxml >
    < identity mappings (end) >

    < following mapping files have a dependendy on >
    < the JCR API >
    < jcr mappings (begin)
    <mapping resourceorgjbpmcontextexevariableinstanc
    JcrNodeInstancehbmxml>
    jcr mappings (end) >


    < ###################### >
    < # jbpm mapping files # >
    < ###################### >

    < hql queries and type defs >
    <mapping resourceorgjbpmdbhibernatequerieshbmxml >

    < graphdef mapping files >
    <mapping
    resourceorgjbpmgraphdefProcessDefinitionhbmxml >
    <mapping resourceorgjbpmgraphdefNodehbmxml >
    <mapping resourceorgjbpmgraphdefTransitionhbmxml >
    <mapping resourceorgjbpmgraphdefEventhbmxml >
    <mapping resourceorgjbpmgraphdefActionhbmxml >
    <mapping resourceorgjbpmgraphdefSuperStatehbmxml >
    <mapping resourceorgjbpmgraphdefExceptionHandlerhbmxml >
    <mapping resourceorgjbpminstantiationDelegationhbmxml >

    < graphnode mapping files >
    <mapping resourceorgjbpmgraphnodeStartStatehbmxml >
    <mapping resourceorgjbpmgraphnodeEndStatehbmxml >
    <mapping resourceorgjbpmgraphnodeProcessStatehbmxml >
    <mapping resourceorgjbpmgraphnodeDecisionhbmxml >
    <mapping resourceorgjbpmgraphnodeForkhbmxml >
    <mapping resourceorgjbpmgraphnodeJoinhbmxml >
    <mapping resourceorgjbpmgraphnodeStatehbmxml >
    <mapping resourceorgjbpmgraphnodeTaskNodehbmxml >

    < contextdef mapping files >
    <mapping
    resourceorgjbpmcontextdefContextDefinitionhbmxml >
    <mapping resourceorgjbpmcontextdefVariableAccesshbmxml >

    < taskmgmtdef mapping files >
    <mapping
    resourceorgjbpmtaskmgmtdefTaskMgmtDefinitionhbmxml >
    <mapping resourceorgjbpmtaskmgmtdefSwimlanehbmxml >
    <mapping resourceorgjbpmtaskmgmtdefTaskhbmxml >
    <mapping
    resourceorgjbpmtaskmgmtdefTaskControllerhbmxml >

    < moduledef mapping files >
    <mapping
    resourceorgjbpmmoduledefModuleDefinitionhbmxml >

    < bytes mapping files >
    <mapping resourceorgjbpmbytesByteArrayhbmxml >

    < filedef mapping files >
    <mapping resourceorgjbpmfiledefFileDefinitionhbmxml >

    < schedulerdef mapping files >
    <mapping
    resourceorgjbpmschedulerdefCreateTimerActionhbmxml >
    <mapping
    resourceorgjbpmschedulerdefCancelTimerActionhbmxml >

    < graphexe mapping files >
    <mapping resourceorgjbpmgraphexeCommenthbmxml >
    <mapping resourceorgjbpmgraphexeProcessInstancehbmxml >
    <mapping resourceorgjbpmgraphexeTokenhbmxml >
    <mapping resourceorgjbpmgraphexeRuntimeActionhbmxml >

    < moduleexe mapping files >
    <mapping resourceorgjbpmmoduleexeModuleInstancehbmxml >

    < contextexe mapping files >
    <mapping
    resourceorgjbpmcontextexeContextInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexeTokenVariableMaphbmxml >
    <mapping
    resourceorgjbpmcontextexeVariableInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceByteArrayInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceDateInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceDoubleInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceHibernateLongInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceHibernateStringInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceLongInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceNullInstancehbmxml >
    <mapping
    resourceorgjbpmcontextexevariableinstanceStringInstancehbmxml >

    < job mapping files >
    <mapping resourceorgjbpmjobJobhbmxml >
    <mapping resourceorgjbpmjobTimerhbmxml >
    <mapping resourceorgjbpmjobExecuteNodeJobhbmxml >
    <mapping resourceorgjbpmjobExecuteActionJobhbmxml >

    < taskmgmtexe mapping files >
    <mapping
    resourceorgjbpmtaskmgmtexeTaskMgmtInstancehbmxml >
    <mapping resourceorgjbpmtaskmgmtexeTaskInstancehbmxml >
    <mapping resourceorgjbpmtaskmgmtexePooledActorhbmxml >
    <mapping
    resourceorgjbpmtaskmgmtexeSwimlaneInstancehbmxml >

    < logging mapping files >
    <mapping resourceorgjbpmlogginglogProcessLoghbmxml >
    <mapping resourceorgjbpmlogginglogMessageLoghbmxml >
    <mapping resourceorgjbpmlogginglogCompositeLoghbmxml >
    <mapping resourceorgjbpmgraphlogActionLoghbmxml >
    <mapping resourceorgjbpmgraphlogNodeLoghbmxml >
    <mapping
    resourceorgjbpmgraphlogProcessInstanceCreateLoghbmxml >
    <mapping
    resourceorgjbpmgraphlogProcessInstanceEndLoghbmxml >
    <mapping resourceorgjbpmgraphlogProcessStateLoghbmxml >
    <mapping resourceorgjbpmgraphlogSignalLoghbmxml >
    <mapping resourceorgjbpmgraphlogTokenCreateLoghbmxml >
    <mapping resourceorgjbpmgraphlogTokenEndLoghbmxml >
    <mapping resourceorgjbpmgraphlogTransitionLoghbmxml >
    <mapping resourceorgjbpmcontextlogVariableLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogVariableCreateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogVariableDeleteLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogVariableUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceByteArrayUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceDateUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceDoubleUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceHibernateLongUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceHibernateStringUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceLongUpdateLoghbmxml >
    <mapping
    resourceorgjbpmcontextlogvariableinstanceStringUpdateLoghbmxml >
    <mapping resourceorgjbpmtaskmgmtlogTaskLoghbmxml >
    <mapping resourceorgjbpmtaskmgmtlogTaskCreateLoghbmxml >
    <mapping resourceorgjbpmtaskmgmtlogTaskAssignLoghbmxml >
    <mapping resourceorgjbpmtaskmgmtlogTaskEndLoghbmxml >
    <mapping resourceorgjbpmtaskmgmtlogSwimlaneLoghbmxml >
    <mapping
    resourceorgjbpmtaskmgmtlogSwimlaneCreateLoghbmxml >
    <mapping
    resourceorgjbpmtaskmgmtlogSwimlaneAssignLoghbmxml >

    <sessionfactory>
    <hibernateconfiguration>
    web应工程webxml文件中定义JbpmContextFilter滤类实现JBPMCONTEXT 初始化
    <filter>
    <filtername>JbpmContextFilter<filtername>
    <filterclass>orgjbpmwebJbpmContextFilter<filterclass>
    <filter>
    <filtermapping>
    <filtername>JbpmContextFilter<filtername>
    <urlpattern>*<urlpattern>
    <filtermapping>
    里jbpm配置已根完成关jbpm详细资料家参考jbpm户指南里说
    子流程
    成果介绍
    详细阐述开发成果
    评审标准:清楚介绍开发成果
    流程业务逻辑非常复杂时候考虑子流程子流程流程相独立
    设计思路
    描述设计思路开发方法技术点
    评审标准:清晰表达设计思路技术点
    jbpm中复杂业务流程文件根业务逻辑划分父流程子流程样方面令流程定义文件会设计太臃肿二方便维护需修改流程进行修改影响流程

    阐述结合工程需应成果进行开发局部需详细描述开发员成果报告够进行般简单开发具较强操作性
    评审标准:开发员说明根应成果进行开发
    里介绍关jbpm子流程里定义两流程定义xml文件父流程定义文件子流程定义文件里想执行完Payfirst务时候jbpm流程动子流程文件中执行边定义务
    里父流程processdefinitionxml
    <xml version10 encodingUTF8>

    <processdefinition xmlnsurnjbpmorgjpdl32 namemyapp>

    <tasknode namePayFirst>
    <task namePayFirstTask swimlanefinance><task>
    <transition nameget house contract tosubprocess>
    <action nameaction
    classcommyappactionMessageActionHandler>
    <message>
    Has pay first bulk of money Print constract now
    <message>
    <action>
    <transition>
    <tasknode>
    <processstate namesubprocess>
    <subprocess namesubprocessdefinition>
    <transition toend><transition>
    <processstate>
    <tasknode namepass round for perusal
    signallastwait createtasksfalse>
    <task nameperusal>
    <assignment actorid#{processStarter}>
    <assignment>
    <task>
    <event typenodeenter>
    <action namecreateInstance
    classcommyappactionCreateTaskInstanceAction><action>
    <event>
    <transition namebackto toOnePersonAudit>
    <transition>
    <tasknode>

    <processdefinition>
    面jbpm中processstate标签代表引子流程里接着定义子流程文件
    子流程subprocessdefinition定义文件
    <xml version10 encodingUTF8>

    <processdefinition xmlnsurnjbpmorgjpdl32
    namesubprocessdefinition>


    <swimlane nameservice>
    <assignment actoridservice1 >
    <swimlane>

    <startstate namesubStart>
    <transition toPrintContract><transition>
    <startstate>


    <tasknode namePrintContract>
    <task namePrintContractTask swimlaneservice><task>
    <transition namePrintContract toend>
    <action nameaction
    classcommyappactionMessageActionHandler>
    <message>Finish the process instance now<message>
    <action>
    <transition>
    <tasknode>

    <endstate nameend><endstate>
    <processdefinition>

    例实现
    结合工程需实现采开发成果开发简单应例链接文档例实现工程工程
    评审标准:简单展示开发成果开发应
    面定义两XML文件父流程子流程面说两文件首先先部署两文件子流程注意部署时候定先部署子流程然部署父流程
    ProcessDefinition subProcess ProcessDefinitionparseXmlResource
    (subprocessdefinitionprocessdefinitionxml)
    jbpmContextdeployProcessDefinition(subProcess)
    ProcessDefinition processDefinition ProcessDefinition
    parseXmlResource(processdefinitionxml)
    jbpmContextdeployProcessDefinition(processDefinition)
    部署完jbpm会两流程定义文件保存jbpm_processinstance表中调中单流程文件调没区调PrintContract 务end()方法jbpm会根流程文件动找子流程文件定义务进行执行
    标准
    描述该技术标准〔接口设计接口实现框架设计数结构设计等〕约定约束等
    评审标准:清晰详细描述出应标准
    考前须知
    描述配置开发等需注意问题包括种关键点难点逐步补充
    评审标准:开发程中遇关应开发成果开发问题局部里找答案
    子流程注意:
    先部署子流程然部署流程否流成执行时候会报找子流程异常
    直接查jbpm_Token者jbpm_log法找流程间关系需查jbpm_processinstance表找父流程 Token离开process state时候会删subprocessid直接jbpm_log法出两token间关系
    应系统jBPM结合
    成果介绍
    实际开发jBPM采jBPM系统业务系统完全离策略jBPM系统负责流程监控执行业务重心然实际业务需求
    设计思路
    客户端访问系统时切业务相关操作业务系统中实现需流程监控业务jBPM流程系统中建立相关流程提供相关流程监控执行接口客户端通接口流程进行操作

    启动流程实例时首先访问流程系统取新流程实例ID业务系统中保存ID

    进行流程监控执行时根ID流程实例进行操作


    面购房流程例说明客户购房程Order中进行处理
    客户登记房启动流程实例取流程ID保存Order中
    销售员销售理财务员通流程系统提供API查找前务执行务时方面执行流程方面修改Order记录
    例实现
    Order记录流程ID
    public class Order implements Serializable {
    private Long id
    private Long processId
    }
    流程业务系统接口OrderManager BpmManager
    客户房登录时先启动流程
    BpmManager bpmManger
    Long processIdbpmManagercreateProcess()
    Order ordernew Order()
    ordersetProcessId(processId)
    sessionsave(order)
    面步骤中根OrderprocessId取流程ID执行流程务
    bpmManagerexecuteProcessTask()

    sessionupdate(order)

    考前须知
    应系统中户角色jBPM结合
    成果介绍
    应系统中户应该jBPM流程系统中致必须统起方面采户帐号步策略业务系统复制必户信息jBPM流程系统中方面户账号策略保持根户账号独立性业务系统根户账号扩展户信息
    设计思路
    两系统中户需求定差异益Hibernate映射机制户账号表映射文件保持系统相独立性


    jBPM中户identity模块提供实际开发中jBPM中提供户表根底应系统较详细户信息面扩展

    建立根底户帐号jBPM中户应系统中户根底扩展

    例实现
    jBPM中User提供根字段
    public class User extends Entity implements Principal {

    private static final long serialVersionUID 1L

    protected String password null
    protected String email null
    protected Set memberships null

    public User() {
    }

    public User(String name) {
    super(name)
    }
    }
    Hibernate映射文件容:
    <xml version10>
    <DOCTYPE hibernatemapping PUBLIC
    HibernateHibernate Mapping DTD 30EN
    hibernatesourceforgenethibernatemapping30dtd>
    <hibernatemapping autoimportfalse defaultaccessfield>
    <class nameorgjbpmidentityUser
    tableJBPM_ID_USER
    discriminatorvalueU>
    <id nameid columnID_><generator classnative ><id>
    <discriminator typechar columnCLASS_>
    <property namename columnNAME_>
    <property nameemail columnEMAIL_>
    <property namepassword columnPASSWORD_>
    <set namememberships cascadeall>
    <key columnUSER_ >
    <onetomany classorgjbpmidentityMembership >
    <set>
    <set namepermissions cascadeall tableJBPM_ID_PERMISSIONS>
    <key columnENTITY_ foreignkeynone >
    <element typeorgjbpmidentityhibernatePermissionUserType>
    <column nameCLASS_>
    <column nameNAME_>
    <column nameACTION_>
    <element>
    <set>
    <class>
    <hibernatemapping>
    里应系统户CustomUser里采jBPM中User中继承策略出字段carId
    public class CustomUser extends User {

    private String cardId

    public String getCardId() {
    return cardId
    }

    public void setCardId(String cardId) {
    thiscardId cardId
    }

    }
    映射文件:
    <xml version10>
    <DOCTYPE hibernatemapping PUBLIC
    HibernateHibernate Mapping DTD 30EN
    hibernatesourceforgenethibernatemapping30dtd>
    <hibernatemapping autoimportfalse defaultaccessfield>
    <subclass namecomsamplemodelCustomUser
    extendsorgjbpmidentityUser discriminatorvalueU>
    <join tableCUSTOM_USER>
    <key columnID_><key>
    <property namecardId columnCARDID_ >
    <join>

    <subclass>
    <hibernatemapping>
    里CustomUserjBPM中User继承
    jBPM前版稳定性评估
    成果介绍
    通官方jbpmRoadMapjbpm jira面写方案出目前jbpm版更新速度会拟频繁方案说年年底完成jbpm40目前版已更新jb版jira发现jbpm33版快速开发中jira目前版升级bug修改功完善
    流程执行步骤耗时阀值动提醒设置
    成果介绍
    Jbpm置调度功 jbpm调度局部分2块timer流程设计员工作timer放置流程中schedulerjbpm维护需台进行调
    设计思路
    流程执行建立删定时器 定时器存放timer store里 定时器运行必须先timer store里面取根指定时间启动该定时器


    Jbpm时间理思路整体说实现非常清晰:
    1引擎解析流程定义xml时相应事件挂接createtimer canceltimer动作
    2流程实例实际运转时createtimer动作相应事件触发时执行
    3createtimerjob表里插入相应时间job记录该job记录附计算完毕执行时间
    4JobExecutorServlet台启动JobExecutorThread线程
    5JobExecutorThread线程停隔段时间job表扫描次找出需执行job记录执行
    6执行次job记录执行完毕删重复执行job记录写入新执行时间更新
    7相应事件触发canceltimer动作应job记录job表里删

    jBPM通定时器〔timer〕实现日程调度node中参加timer元素实现基定时器节点执行监控实现动提醒功
    jbpm提供2种调scheduler方法:
    种web应采orgjbpmschedulerimplSchedulerServlet具体方法类javadoc例需webxml中加载行
    种针cs程序jbpm提供例
    orgjbpmschedulerimplSchedulerMain参编写Scheduler
    实例实现
    容易方法指定定时器节点里参加定时器元素
    运actiontimer例子
    <state name'catch crooks'>
    <timer name'reminder' duedate'3 business hours' repeat'10 business minutes'
    transition'timeouttransition' >
    <action class'theremainderactionclassname' >
    timer>
    state>
    运scripttimer例子
    <state name'catch crooks'>
    <timer name'reminder' duedate'3 business hours' repeat'10 business minutes'
    transition'timeouttransition' >
    <script>Systemoutprintln(new Date())script>
    timer>
    state>
    例中旦流程实例运行进入state 'catch crooks'定时器reminder创立该定时器延迟3 business hours开始执行动作10 business minutes重复执行次期马执行action类中Java代码然实施timeouttransition(script印时间)迁移
    通事件action中参加createtimercanceltimer动作分实现事件定时器创立取消
    定时器timerdecision fork join node processstate state superstate tasknode等节点设置开始时间duedate频率repeat定时器动作支持动作元素actionscript会运行设置动作定时器通动作创立取消两动作元素createtimercanceltimer事实默认定时器元素createtimer动作附nodeenter事件canceltimer动作附nodeleave事件简略表示
    说说整程:
    1令牌进入节点catch crooks
    2timer触发〔实际时执行createtimer动作〕
    33 business hours timer 事件触发
    4定义action执行
    5令牌着timeouttransition路径离开catch crooks节点
    6canceltimer动作执行timer终止〔没repeat时机〕
    注: 运timer先启动scheduler果web工程webxml中配置JbpmThreadsServlet样工程启动会动开启scheduler
    JbpmThreadsServlet配置: 
    < JbpmThreadsServlet >
    <servlet>
    <servletname>JbpmThreadsServletservletname>
    <servletclass>orgjbpmwebJbpmThreadsServletservletclass>
    <loadonstartup>1loadonstartup>
    servlet>
    <servletmapping>
    <servletname>JbpmThreadsServletservletname>
    <urlpattern>threadsurlpattern>
    servletmapping>
    考前须知
    time节点说 namerepeattransition选属性流程定义说time节点name必须唯果定义name属性引擎会默认node节点name赋timer面例子里果定义timer节点namename会catch crooks说说repeat属性果定义timer会执行次动作会重复执行transition属性果定义属性流程令牌会timer执行动作完毕着路径离开node节点面例子里定义repeat属性action会执行次
    action节点选timer节点时间时执行动作意action类型包括script注意时间关两种action类型:createtimer canceltimer实timer节点引擎解释时分解createtimer canceltimer两actioncreatetimer挂接nodeenter事件中canceltimer挂接node leave事件中action节点挂
    传阅功实现
    成果介绍
    传阅功理系统中拟常见功里jbpm实现该功
    设计思路
    里通jbpmtransition实现传阅功

    关jbpmtransition简单家参考jbpm户指南
    例实现
    <tasknode nameCoding>
    <task nameCoding swimlaneprogrammer>

    <transition nameto_CodeReview toCode Review>
    <transition>

    <transition nameto_IntegratedTest toIntegratedTest>
    <transition>

    <tasknode>


    <tasknode nameCode Review>
    <task nameReview Code swimlanemanager>

    <task>

    <transition nameto_Coding toCoding><transition>

    <tasknode>
    面代码检查〞类似传阅流程程序员编写完代码需传manager进行代码审查manager审查完毕需发回程序员
    动态指定执行者
    成果介绍
    面讲传阅功实现家发现面例子传阅流程定义xml文件面指定阅读吸纳动态指定传阅果动态指定执行者面实现意义实际操作中操作充满确定性执行者会常改变里介绍务动态指定执行者
    设计思路
    里通jbpmActionHandler操作动态指定执行者操作进入该务节点时候通该务指定action操作该操作根业务规进行务执行者动态指定

    务task节点assignment标签指定运行该务执行者果没指定执行该务外通action操作程序中动态设置assignment中执行实现里执行
    例实现
    首先流程processdefinitionxml定义例:
    <xml version10 encodingUTF8>

    <processdefinition xmlnsurnjbpmorgjpdl32 namemyapp>



    <tasknode nameOnePersonAudit>
    <task nameOnePersonAuditTask swimlanemanager>
    <controller>
    <variable namepass accessreadwriterequired><variable>
    <controller>
    <task>
    < event typenodeleave>
    <action namecreateInstance
    classcommyappactionCreateTaskInstanceAction>
    <action>
    <event>
    <transition nameOnePersonAduit toIsAgreeAduit >
    <transition nameperusaltoone topass round for
    perusal><transition>
    <tasknode>

    <tasknode namepass round for perusal
    signallastwait createtasksfalse>
    <task nameperusal>
    <assignment actorid#{processStarter}><assignment>
    <task>
    <event typenodeenter>
    <action namecreateInstance
    classcommyappactionCreateTaskInstanceAction>
    <action>
    <event>
    <transition namebackto toOnePersonAudit><transition>
    <tasknode>

    <processdefinition>
    面务OnePersonAudit里面transitionperusaltoone指务pass round for perusal里传阅流程pass round for perusal务节点中指定该务执行者 该务中
    <event typenodeenter>
    <action namecreateInstance
    classcommyappactionCreateTaskInstanceAction><action>
    <event>
    事件类型nodeenter〞表示进入该务时执行CreateTaskInstanceAction类操作该类中动态设定该务执行者
    CreateTaskInstanceAction代码:
    public class CreateTaskInstanceAction implements ActionHandler {

    public void execute(ExecutionContext executionContext) throws Exception {
    TODO Autogenerated method stub
    Systemoutprintln(************************************)
    Systemoutprintln( CreateTaskInstanceAction )
    Systemoutprintln(************************************)

    Token token executionContextgetToken()
    TaskMgmtInstance tmi executionContextgetTaskMgmtInstance()
    TaskNode taskNode (TaskNode) executionContextgetNode()
    Task task taskNodegetTask(perusal)
    tmicreateTaskInstance(task token)setActorId(mytest1)
    tmicreateTaskInstance(task token)setActorId(mytest2)
    tmicreateTaskInstance(task token)setActorId(mytest3)

    }
    }
    SSH框架整合
    SSH(Struts+Spring+Hibernate)种流行web开发框架SSHjBPM考虑springmodules提供集成方案类理会带便利
    Spring配置文件中声明jbpm
    < jBPM Configuration >
    <bean idjbpmConfiguration

    jbpm31LocalJbpmConfigurationFactoryBean>
    < pass in existing sessionFactory >
    <property namesessionFactory refsessionFactory >
    <property nameconfiguration
    valueclasspathorgappfusejbpmjbpmcfgxml >
    <property nameprocessDefinitions>
    <list>
    <ref localtestProcess >
    <list>
    <property>
    <property namecreateSchema valuetrue >
    <bean>

    <bean idtestProcess

    definitionProcessDefinitionFactoryBean>
    <property namedefinitionLocation
    valueclasspathorgappfusejbpmprocesstestprocessxml >
    <bean>

    <bean idjbpmTemplate
    classorgspringmodulesworkflowjbpm31JbpmTemplate>
    <constructorarg index0 refjbpmConfiguration >
    <constructorarg index1 reftestProcess >
    <bean>
    jbpmConfigration赖sessionFactorySSH中配置sessionFactory
    现Hibernate样jBPM

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    JBPM工作流演示系统使用说明

    JBPM工作流演示系统〔请假工作流〕使用说明一、 安装说明本系统在JDK1.5的根底上编译,请选择支持JDK1.5及以上版本的WEB容器,推荐使用Tomcat5.5,不保证与其他WEB效劳器兼...

    1周前   
    58    0

    项目工作流程及管理

     项目部运营管理工作流程项目运作严格按照: 实施前——项目实施——系统调试验收——售后服务几个阶段安排工作流程一、 流程图1销售人员提出项目请求 实施前2系统集成部安排人员响应,以配合销售...

    6个月前   
    160    0

    复旦协达WFM工作流管理解决方案-管理系统解决方案

    复旦协达WFM工作流管理解决方案-管理系统解决方案   · 方案背景   工作流管理(Workflow Management, WFM)是人与计算机共同工作的自动化协调、控制和通讯,在计算机化...

    9年前   
    446    0

    项目管理工作流程

    项目管理工作制度(讨论稿,供项目部项目管理参考)第一章 总则第一条 贯彻公司以市场为中心的基本思想,理顺项目管理部门和人员的关系,确定工作流程,明确工作责任,遵照国家有关标准规范和公司项目管理...

    6个月前   
    189    0

    工程现场项目管理的工作流程

    工程现场项目管理的工作流程     1、除设计院正式出的施工图纸外,在施工中发现图纸不详细或必须变更的情况,由建设方总工向设计院发出通知,设计院具体设计人员到场与现场建设方工程师、工程部经...

    9年前   
    7026    0

    护理管理工作流程

    护理管理工作流程  入院工作流程  一、接入院通知后,根据病人病情准备床单位。  二、病房护士主动的迎接新病人,送病人至指定的病室床位,进行入院评估,做好入院介绍和指导。  三、测量体温、脉搏...

    9年前   
    575    0

    物料管理工作流程

    1. 目的 确定物料管理的流程、职责和工作要求。 2. 适用范围 适用于对公司的物料管理。 3. 产品成本核算的流程/职责和工作要求 流 程 职 责 工作要求 相关文件...

    7年前   
    10348    0

    最小生成树算法过程详解(信息系统项目管理师考试)

    最小生成树算法过程详解针对最小生成树算法这一知识点,相当一部分课本和相关参考书对算法过程讲解并不是特别详尽。本文主要针对信息系统项目管理师考试,对最小生成树算法过程进行逐步解析,以更加促进对知...

    2年前   
    280    0

    IT项目管理之需求管理工作流

    IT项目管理之需求管理工作流1.问题分析   问题分析可以通过了解问题及涉众的最初需要,并提出高层解决方案来实现。它是为找出“隐藏在问题之后的问题”而进行的推理和分析。问题分析期间,将对“什么...

    11年前   
    385    0

    E__物料管理MM详解

    目 录 1 MM系统概述 3 1.1 介绍 3 1.2 MM系统 4 1.3 物料需求计划 4 1.4 采购 4 1.5 库存管理 5 1.6 收货 5 1...

    14年前   
    21405    0

    ERP中的成本管理图文详解

    ERP中的成本管理图文详解 个人学习使用 严禁转载 版权王纹专著所有 点评: 上一篇我们介绍了ERP中的财务会计。从会计理论的角...

    12年前   
    6292    0

    绩效管理工具详解

    绩效管理工具的简介和应用人力资源管理正日益受到企业高度重视,绩效管理作为人力资源管理的核心,更加备受重视,一个企业绩效管理的好坏直接决定了该企业在市场中的存亡。因此,国内有学者提出,在某种意义...

    6天前   
    50    0

    设计变更管理工作流程(1)

    设计变更管理工作流程     流程名称 设计变更管理工作流程     文件受控状态       文件管理部门   总经理 工程副总 总工程师 成本合约部 总工...

    5年前   
    1361    0

    (14)班组管理工作流程

    1. 目的 为班组评审提供程序准则,确保此项工作求真、务实的开展。 2. 适用范围 适用于新疆航空公司基层班组评选的工作。 3. 管理程序 流 程 职 责 工 作 ...

    9年前   
    2104    0

    公司档案管理工作流程

    档案室每年1月份下发通知,要求各部门、分公司移交前一年的文书类资料,各部门、分公司秘书按照要求填写移交清单,经部门领导签字确认。档案室秘书对移交清单进行核对,符合要求的进行接收,档案管理员对接收...

    3年前   
    696    0

    酒店管理岗位工作流程

      管家部经理工作流程及内容   1、听取宾客建意分析,营销分析,质检通报,值班经理通报,并记录。 2、汇报前一天工作完成情况,及今天工作汇报。 3、听取总经理工作按排。    ...

    9年前   
    7635    0

    (14)班组管理工作流程

    1. 目的 为班组评审提供程序准则,确保此项工作求真、务实的开展。 2. 适用范围 适用于新疆航空公司基层班组评选的工作。 3. 管理程序 流 程 职 责 工 作 ...

    15年前   
    22612    0

    企業過程工作流的瓶頸管理

    企业过程工作流的瓶颈管理 ----再工程的概念最早出现在计算机软件工程中,后来人们将其引入企业管理领域,为企业经营管理提出了一个全新的思路,影响波及全球。近年来,随着企业过程再工程(BPR,...

    9年前   
    5863    0

    档案管理工作流程

    工作流程一、 合同归档1、 我司合同是属定格合同;2、 我司每年微波炉3月28日,空调10月份签订新年度合同;3、 根据新年度合同进行分地区分客户分类别进行整理归档;4、 按地区客户进行整理客...

    2周前   
    66    0

    法务部管理职责及工作流程

    法务部管理职责和人员岗位职责及工作流程 一、部门管理职责 1、参与公司重大经营决策,保证公司经营活动的合法、合规,提出法律意见,防范法律风险; 2、参与公司规章制度的起草、审...

    3年前   
    1199    0

    文档贡献者

    天***猩

    贡献于2024-04-02

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档