`

jbpm4任务列表分页显示【转】

 
阅读更多

关键时刻发现我并不会,于是下定决心研究一下,发现jbpm4还是有些不尽人意,比如历史变量的保存问题就很让人郁闷。

获得jbpm4 hibernate session

/***@author yhy
* 获得JBPM session
* @return Session:hibernate Session
*/
public Session getTaskSession(){
   EnvironmentFactory environmentFactory = (EnvironmentFactory)
      getProcessEngine();
   Environment environment = environmentFactory.openEnvironment();
   Session session = null;
   try{     
    session = environment.get(Session.class);
   }catch(Exception e){
    e.printStackTrace();
   }

   return session;
}

 

创建query()
/**
* 创建query查询
* @param hql hql查询语句
* @return Query query查询器
*/
public Query creatQuery(String hql){
        return getTaskSession().createQuery(hql);
}

分页查询
/**
* 分页查询
* @param sql hql sql
* @param pageSize 每页显示的数量
* @param ipage 页码
* @param parameterMap 参数map
* @return List 结果
*/
public List pageQuery(String sql, int pageSize,int ipage,Map<String, Object> parameterMap){
   Query query = creatQuery(sql);
   int startResult = (ipage -1)*pageSize + 1;
  
   if (pageSize > 0 && startResult > 0) {
            query.setFirstResult(startResult);
            query.setMaxResults(pageSize);
        }
  
   //设置hql查询参数
   parameterMap = parameterMap == null ? new HashMap<String, Object>() : parameterMap;
        for (String key : parameterMap.keySet()) {
            if (key != null && !"".equals(key)) {
                Object value = parameterMap.get(key);
                if (value != null) {
                    query.setParameter(key, value);
                }
            }
        }
        //返回结果
        return query.list();
}

统计方法
/**
* 普通HQL统计查询
* @param sql 统计HQL
* @param parameterMap 参数map
* @return int 统计数
*/
@SuppressWarnings("unchecked")
public int query(String countSql, Map<String, Object> parameterMap){
   Query query = creatQuery(countSql);
   parameterMap = parameterMap == null ? new HashMap<String, Object>() : parameterMap;
        for (String key : parameterMap.keySet()) {      //进行迭代
            if (key != null && !"".equals(key)) {
                Object value = parameterMap.get(key);
                if (value != null) {
                    query.setParameter(key, value);     //加入查询条件
                }
            }
        }
   List list = query.list();
  
   return ((Long) list.get(0)).intValue();
}


查询方法
/**
* 任务查询
* @return FindResult 查询结果
*/
public FindResult queryTask(int ipage,Map<String, String> formMap){
   List result = new ArrayList();
   String taskName = formMap.get("taskName");
  
   Integer userId = (Integer) WebUtils.getAttribute("userId");
   if(userId == null){
    logger.info("[session已过期或者没有登录!请重新登录再试!]");
    return new FindResult();
   }
   Map<String, Object> paramsMap = new HashMap();
   paramsMap.put("userId", userId.toString());
  
        String sql = "from org.jbpm.pvm.internal.task.ParticipationImpl t where t.userId = :userId";
        String countsql = "select count(t.dbid) from org.jbpm.pvm.internal.task.ParticipationImpl t where t.userId = :userId";
       
        if(StringUtils.isNotBlank(taskName)){
        sql = sql + " and t.task.name = :taskName";
        countsql = countsql + " and t.task.name = :taskName";
        paramsMap.put("taskName", taskName);
        }
        int rowCount = JbpmUtils.query(countsql, paramsMap);
   List<ParticipationImpl> list = JbpmUtils.pageQuery(sql, QcConstant.PAGE_SIZE, ipage, paramsMap);
  
   for(ParticipationImpl task : list){
    String exerciser = (String) task.getTask().getVariable("users");
    Map map = new HashMap();
    map.put("任务ID", task.getTask().getId());
    map.put("任务名称", task.getTask().getName());
    map.put("创建时间", task.getTask().getCreateTime());
    map.put("执行人", exerciser.substring(exerciser.indexOf(",")+1));
    map.put("form", task.getTask().getFormResourceName());
    map.put("recordingId", JbpmUtils.getTaskService().getVariable(task.getTask().getId(), "recordingId"));
    result.add(map);
   }
  
   FindResult findResult = new FindResult();
   findResult.setResult(result);
   findResult.setRowCount(rowCount);
   findResult.setPageCount(getPageNum(rowCount));
  
   return findResult;
}

FindResult的代码如下:

public class FindResult<T> {

/**
* 总页数
*/
private int pageCount;

/**
* 总行数
*/
private int rowCount;

/**
* 结果集
*/
private List<T> result;

public int getPageCount() {
   if (result == null)
    pageCount = 0;
   return pageCount;
}

public void setPageCount(int pageCount) {
   this.pageCount = pageCount;
}

public List<T> getResult() {
   if (result == null)
    result = new java.util.ArrayList<T>();
   return result;
}

public void setResult(List<T> result) {
   this.result = result;
}

public int getRowCount() {
   if (result == null)
    rowCount = 0;
   return rowCount;
}

public void setRowCount(int rowCount) {
   this.rowCount = rowCount;
}

}

分享到:
评论

相关推荐

    jbpm4jbpm5

    jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...

    jbpm4源代码 简单实现公文流转

    7. **Web界面**:"jbpm4web"可能是指jbpm4的Web应用程序部分,用于用户交互,提交任务,查看待办事项等。这部分可能包含前端页面和后端控制器,通过HTTP与工作流引擎通信。 在下载的压缩包中,"jbpm4web"可能包括...

    jbpm4案例源码

    jbpm4的核心功能包括流程定义、流程执行、任务管理、事件处理和监控等。流程定义是通过Business Process Definition Language (BPMN) 2.0标准来完成的,这使得流程图具有高度的可读性和可维护性。流程执行服务则负责...

    JBPM4 常用表结构及其说明

    **JBPM4_TASK** — 任务表 - **作用**: 记录待办任务信息。 - **主要内容**: 任务ID、名称、负责人、状态等。 - **特点**: 涉及到人的交互活动通常被记录在此表。 ##### 6. **JBPM4_VARIABLE** — 上下文表 - **...

    jbpm完整示例 任务列表 权限管理

    每个任务都是流程中的一环,待办任务列表显示了当前用户需要处理的所有未完成的工作。这些任务可能是由其他用户分配过来的,或者是流程自动分配的。通过查看待办任务,用户可以清晰地了解自己的工作职责,按照优先级...

    jBPM4工作流应用开发指南.pdf

    jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...

    jbpm4web-JBPM4的一个web版本的Demo

    jbpm4web提供了一个用户友好的任务列表,让用户能够查看并处理待办任务。参与者可以完成任务、分配任务给其他人,或者对任务进行评论和附件上传等操作。 4. **流程控制**: 在jbpm4web中,用户还可以进行流程控制...

    JBPM4 表 详细介绍

    JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出。下面将详细介绍JBPM4中各个表的作用及相关字段说明。 #### 1. **JBPM4_DEPLOYMENT** - 流程定义表 - **描述**: 此表用于存储...

    JBPM4 java源代码分包详解JBPM4

    【JBPM4 Java源代码分包详解】 JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1....

    JBPM4 开发文档 实例 流程

    - **JBPM4_JOB**:定时任务表。 - **JBPM4_LOB**:存储大对象数据。 - **JBPM4_PARTICIPATION**:参与者表。 - **JBPM4_SWIMLANE**:泳道表,用于表示流程中的并行处理。 - **JBPM4_TASK**:任务表。 - **JBPM4_...

    jBPM4完整例子

    jBPM4的核心特性包括流程建模、流程实例管理、任务服务、规则引擎等。通过使用jBPM4,开发者可以定义复杂的业务流程,并且能够灵活地进行流程更改和监控。 文档教程将引导你完成以下几个关键步骤: 1. **环境搭建*...

    jbpm4 完整的请假流程

    3. **示例代码(.java)**:展示如何使用jbpm4 API来启动流程实例、查询任务、完成任务等操作。 4. **数据库脚本(.sql)**:用于创建jbpm4所需的数据库表结构。 5. **配置文件(如jbpm.cfg.xml)**:定义jbpm4的...

    jBPM4学习总结

    【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...

    jBPM4工作流示例jbpmDemo

    **jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...

    jBPM 4使用手记

    jBPM 4包含一个内置的任务服务,用于管理流程中的任务分配和完成。任务可以分配给特定的用户或角色,通过工作台或自定义接口进行处理。此外,任务服务提供了监听器和工作流事件处理机制,便于扩展和定制。 ### 6. ...

    一个简单的Jbpm4项目源码

    1. **流程定义(Process Definition)**: 在JBPM4中,业务流程以BPMN2(Business Process Model and Notation 2.0)的XML文件形式进行定义,包含了流程图中的各个节点和连接线,如任务(Task)、事件(Event)、网关...

    jbpm4基本jar包

    3. **任务管理**:jbpm4提供任务服务,允许用户领取、完成任务,以及对任务进行查询和管理,支持自定义任务表单和工作流审批规则。 4. **规则引擎**:jbpm4集成了Red Hat的JBoss Drools规则引擎,使得流程决策可以...

    jbpm4的员工请假例子原码

    2. **任务管理**:jbpm4提供了任务服务,用于处理流程中的任务分配和执行。例如,在员工提交请假申请后,系统会自动创建一个待审批的任务,分配给对应的部门经理。任务可以包含相关数据,如请假天数、原因等。 3. *...

    jBPM请假工作流,很全的任务列表

    在"jBPM请假工作流"中,我们可以看到一个全面的任务列表,这个列表涵盖了请假流程中的各个阶段,使得整个请假过程变得规范、高效。 1. **我要请假**: 这是流程的起点,员工通过jBPM发起请假申请。用户在系统中填写...

    JBPM4与Spring整合例子代码

    **JBPM4与Spring整合详解** JBPM4(Java Business Process Management 4)是一个开源的工作流管理系统,它提供了业务流程的建模、部署、执行和监控功能。Spring框架则是Java应用开发中的一个核心组件,主要负责依赖...

Global site tag (gtag.js) - Google Analytics