BPS流程怎样设计业务与流程的结合

2024-01-16 10:20

本文主要是介绍BPS流程怎样设计业务与流程的结合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读原文

场景描述

BPS工作流默认客户端界面中包括"待办任务列表"、"已办任务列表"等纯流程信息,而为了业务操作人员更全面了解任务相关的业务信息,往往需要在任务列表中显示相关的业务属性信息。

本场景适用BPS服务器与用户应用集中部署的方式,流程引擎的数据库和应用的数据库存放在同一数据库中。

案例简介

业务场景描述:

在报销流程中,审批人登录系统后能结合工作项和报销业务表查询到待审批的报销单信息,查询条件为报销人,如下图所示:

场景实现(关键步骤描述)

  1. 报销业务表 (通过流程实例ID与流程进行关联)
    create table EXPENSEINFO
    (
       EXPID          NUMERIC( 18 ) not null ,
       PROCESSINSTID  NUMERIC( 18 ) not null ,
       EXPNAME        VARCHAR( 20 ) not null ,
       EXPMONEY       NUMBER not null ,
       REASON         VARCHAR( 255 ),
       ISBUDGETITEM   CHAR( 1 ),
       AUDITOR        VARCHAR( 20 )
      );
    alter table EXPENSEINFO  add constraint P_EXP primary key (EXPID);
    -- Add comments to the columns
    comment on column EXPENSEINFO.EXPID
       is '报销单编号' ;
    comment on column EXPENSEINFO.PROCESSINSTID
       is '流程实例ID' ;
    comment on column EXPENSEINFO.EXPNAME
       is '报销人' ;
    comment on column EXPENSEINFO.EXPMONEY
       is '报销金额' ;
    comment on column EXPENSEINFO.REASON
       is '报销原因' ;
    comment on column EXPENSEINFO.ISBUDGETITEM
       is '是否是预算内项目' ;
    comment on column EXPENSEINFO.AUDITOR
       is '财务审阅人' ;
  2. 构造业务实体对应的XSD和HBM
    • expdata.xsd代码如下:
      ?
      <?xml version= "1.0" encoding= "UTF-8" standalone= "no" ?>
      <xs:schema xmlns= "com.eos.workflow.expdata" xmlns:sdo= "commonj.sdo" xmlns:sdoJava= "commonj.sdo/java"
        xmlns:xs= "<a href="http://www.w3.org/2001/XMLSchema" "="">http://www.w3.org/2001/XMLSchema" targetNamespace= "com.eos.workflow.expdata" >
           <xs:complexType name= "Expenseinfo" >
               <xs:sequence>
                   <xs:any/>
                   <xs:element name= "expid" type= "xs:long" />
                   <xs:element name= "processinstid" type= "xs:long" />
                   <xs:element name= "expname" type= "xs:string" />
                   <xs:element name= "expmoney" type= "xs:long" />
                   <xs:element name= "reason" type= "xs:string" />
                   <xs:element name= "isbudgetitem" type= "xs:string" />
                   <xs:element name= "auditor" type= "xs:string" />
               </xs:sequence>
           </xs:complexType>
      </xs:schema>
    • expdata.hbm代码如下:
      ?
      <?xml version= "1.0" encoding= "UTF-8" ?>
      <!DOCTYPE hibernate-mapping PUBLIC  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" "="">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
      <hibernate-mapping>
           < class dynamic-insert= "true" dynamic-update= "true" entity-name= "com.eos.workflow.expdata.Expenseinfo"
            table= "EXPENSEINFO" >
               <tuplizer class = "com.primeton.server.das.tuplizer.SDOEntityTuplizer" entity-mode= "sdo" />
               <id name= "expid" type= "long" >
                   <column length= "18" name= "EXPID" />
                   <generator class = "assigned" />
               </id>
               <property name= "processinstid" type= "long" >
                   <column length= "18" name= "PROCESSINSTID" not- null = "true" />
               </property>
               <property name= "expname" type= "string" >
                   <column length= "20" name= "EXPNAME" not- null = "true" />
               </property>
               <property name= "expmoney" type= "long" >
                   <column length= "22" name= "EXPMONEY" not- null = "true" />
               </property>
               <property name= "reason" type= "string" >
                   <column length= "255" name= "REASON" />
               </property>
               <property name= "isbudgetitem" type= "string" >
                   <column length= "1" name= "ISBUDGETITEM" />
               </property>
               <property name= "auditor" type= "string" >
                   <column length= "20" name= "AUDITOR" />
               </property>
           </ class >
      </hibernate-mapping>
  3. 把expdata.hbm和expdata.xsd放在"${BPS_HOME}\apache-tomcat-5.5.20\webapps\default\WEB-INF\ _srv\work\system\com.eos.workflow\com\eos\workflow"目录下。
  4. 结合业务查询关键代码
    ?
    public List<WFWorkItem> getUserTasks4SDO(User user,ExpenseInfoForm expenseInfoForm, PageCond pageCond)
        throws WFServiceException {
         List<WFWorkItem> tasklist = new ArrayList();
             //获取工作列表查询器接口
         IWFWorklistQueryManager workListMng = client.getWorklistQueryManager();
             //创建并封装工作项查询对象
         DataObject workItemFilter=DataFactory.INSTANCE.create( "com.primeton.das.criteria" , "criteriaType" );
             workItemFilter.set( "_entity" , "com.eos.workflow.data.WFWorkItem" );
             //创建并封装业务查询对象
         DataObject bizEntityFilter=DataFactory.INSTANCE.create( "com.primeton.das.criteria" , "criteriaType" );
             bizEntityFilter.set( "_entity" ,
             "com.eos.workflow.expdata.Expenseinfo" );
         String expname = expenseInfoForm.getExpname();
             if (expname != null && ! "" .equals(expname))
             {
                 bizEntityFilter.set( "/_and[1]/_expr[1]/expname" , expname);
                 bizEntityFilter.set( "/_and[1]/_expr[1]/_op" , "like" );
                 bizEntityFilter.set( "/_and[1]/_expr[1]/_likeRule" , "all" );
             }
             DataObject pageCondSDO=DataFactory.INSTANCE.create( "com.eos.foundation" , "PageCond" );
             pageCondSDO.set( "begin" , pageCond.getBegin());
             pageCondSDO.set( "length" , pageCond.getLength());
             pageCondSDO.set( "isCount" , pageCond.getIsCount());
             DataObject[] objs = workListMng.queryPersonBizEntities4SDO(user.getUserId(), "ALL" , "ALL" ,
      bizEntityFilter, workItemFilter, "processinstid" , pageCondSDO);
             //回填查询记录数,更新输入的分页信息
             pageCond.setCount(pageCondSDO.getInt( "count" ));
             //将查询结果(DataObject数组类型)转化为WFWorkItem的List类型(JavaBean类型)
              tasklist = BPSDataConvertor.convertToUserObjectList(objs, com.eos.workflow.data.WFWorkItem. class );
             return tasklist;
         }

这篇关于BPS流程怎样设计业务与流程的结合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612238

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理