persistenceservicehibernateimpl.java

来自「Fire-Workflow-Engine-All-In-One-20090208」· Java 代码 · 共 484 行 · 第 1/2 页

JAVA
484
字号
    public Integer findTheLatestVersionOfWorkflowDefinition(final String processId) {
        //取得当前最大的version值
        Integer result = (Integer) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                Query q = arg0.createQuery("select max(m.version) from WorkflowDefinition m");
                Object obj = q.uniqueResult();
                if (obj != null) {
                    Integer latestVersion = (Integer) obj;
                    return latestVersion;
                } else {
                    return null;
                }
            }
        });
        return result;
    }

    public WorkflowDefinition findWorkflowDefinitionById(String id) {
        return (WorkflowDefinition) this.getHibernateTemplate().get(WorkflowDefinition.class, id);
    }

    public WorkflowDefinition findWorkflowDefinitionByProcessIdAndVersion(final String processId, final int version) {
        WorkflowDefinition workflowDef = (WorkflowDefinition) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                Criteria c = arg0.createCriteria(WorkflowDefinition.class);
                c.add(Expression.eq("processId", processId));
                c.add(Expression.eq("version", version));
                return (WorkflowDefinition) c.uniqueResult();
            }
        });
        return workflowDef;
    }

    public WorkflowDefinition findLatestVersionOfWorkflowDefinitionByProcessId(String processId) {
        Integer latestVersion = this.findTheLatestVersionOfWorkflowDefinition(processId);
        return this.findWorkflowDefinitionByProcessIdAndVersion(processId, latestVersion);
    }

    public List<WorkflowDefinition> findWorkflowDefinitionByProcessId(final String processId) {
        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                Criteria c = arg0.createCriteria(WorkflowDefinition.class);
                c.add(Expression.eq("processId", processId));
                return c.list();
            }
        });

        return result;
    }

    public List<WorkflowDefinition> findAllLatestVersionOfWorkflowDefinition() {
        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                String hql = "select distinct model.processId from WorkflowDefinition model ";
                Query query = arg0.createQuery(hql);
                List processIdList = query.list();
                List _result = new Vector<WorkflowDefinition>();
                for (int i = 0; i < processIdList.size(); i++) {
                    WorkflowDefinition wfDef = findLatestVersionOfWorkflowDefinitionByProcessId((String) processIdList.get(i));
                    _result.add(wfDef);
                }
                return _result;
            }
        });
        return result;
    }

    public List<IWorkItem> findTodoWorkItems(final String actorId) {
        return findTodoWorkItems(actorId,null);
    }

    public List<IWorkItem> findTodoWorkItems(final String actorId, final String processInstanceId) {

        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {       
                Criteria criteria = arg0.createCriteria(WorkItem.class);

                Criterion cri1 = Expression.eq("state", new Integer(0));
                Criterion cri2 = Expression.eq("state", new Integer(1));
                Criterion cri_or = Expression.or(cri1, cri2);
                
                if (actorId!=null && !actorId.trim().equals("")){
                    Criterion cri0 = Expression.eq("actorId", actorId);
                    Criterion cri_and = Expression.and(cri0, cri_or);
                    criteria.add(cri_and);
                }else{
                    criteria.add(cri_or);
                }
                
                criteria.createAlias("taskInstance", "taskInstance");
                if (processInstanceId != null && !processInstanceId.trim().equals("")) {
                    criteria .add(Expression.eq("taskInstance.processInstanceId",processInstanceId));
                }

                return criteria.list();    
            }
        });
        return result;
    }

    public List<IWorkItem> findTodoWorkItems(final String actorId, final String processId, final String taskId) {
        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                Criteria criteria = arg0.createCriteria(WorkItem.class);

                
                Criterion cri1 = Expression.eq("state", new Integer(0));
                Criterion cri2 = Expression.eq("state", new Integer(1));
                Criterion cri_or = Expression.or(cri1, cri2);
                
                if (actorId!=null && !actorId.trim().equals("")){
                    Criterion cri0 = Expression.eq("actorId", actorId);
                    Criterion cri_and = Expression.and(cri0, cri_or);
                    criteria.add(cri_and);
                }else{
                    criteria.add(cri_or);
                }
                
                criteria.createAlias("taskInstance", "taskInstance");
                if (processId != null && !processId.trim().equals("")) {
                    criteria .add(Expression.eq("taskInstance.processId",processId));
                }
                
                if (taskId != null && !taskId.trim().equals("")) {
                    criteria.add(Expression.eq("taskInstance.taskId", taskId));
                }
                return criteria.list();                      
                
                
            }
        });
        return result;
    }

    public List<IWorkItem> findHaveDoneWorkItems(final String actorId) {
        return findHaveDoneWorkItems(actorId,null);
    }

    public List<IWorkItem> findHaveDoneWorkItems(final String actorId, final String processInstanceId) {

        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {       
                Criteria criteria = arg0.createCriteria(WorkItem.class);

                Criterion cri1 = Expression.eq("state", new Integer(2));
                Criterion cri2 = Expression.eq("state", new Integer(-1));
                Criterion cri_or = Expression.or(cri1, cri2);
                
                if (actorId!=null && !actorId.trim().equals("")){
                    Criterion cri0 = Expression.eq("actorId", actorId);
                    Criterion cri_and = Expression.and(cri0, cri_or);
                    criteria.add(cri_and);
                }else{
                    criteria.add(cri_or);
                }
                
                criteria.createAlias("taskInstance", "taskInstance");
                if (processInstanceId != null && !processInstanceId.trim().equals("")) {
                    criteria .add(Expression.eq("taskInstance.processInstanceId",processInstanceId));
                }

                return criteria.list();    
            }
        });
        return result;
    }

    public List<IWorkItem> findHaveDoneWorkItems(final String actorId, final String processId, final String taskId) {
        List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                Criteria criteria = arg0.createCriteria(WorkItem.class);

                
                Criterion cri1 = Expression.eq("state", new Integer(2));
                Criterion cri2 = Expression.eq("state", new Integer(-1));
                Criterion cri_or = Expression.or(cri1, cri2);
                
                if (actorId!=null && !actorId.trim().equals("")){
                    Criterion cri0 = Expression.eq("actorId", actorId);
                    Criterion cri_and = Expression.and(cri0, cri_or);
                    criteria.add(cri_and);
                }else{
                    criteria.add(cri_or);
                }
                
                criteria.createAlias("taskInstance", "taskInstance");
                if (processId != null && !processId.trim().equals("")) {
                    criteria .add(Expression.eq("taskInstance.processId",processId));
                }
                
                if (taskId != null && !taskId.trim().equals("")) {
                    criteria.add(Expression.eq("taskInstance.taskId", taskId));
                }
                return criteria.list();                      
                
                
            }
        });
        return result;
    }    
    
    public void deleteWorkItemsInInitializedState(final String taskInstanceId) {
        this.getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                String hql = "delete from org.fireflow.engine.impl.WorkItem as model where model.taskInstance.id=? and model.state=0";
                Query query = arg0.createQuery(hql);
                query.setString(0, taskInstanceId);
                return query.executeUpdate();
            }
        });
    }
    
    /*
    public List<IWorkItem> findHaveDoneWorkItems(final String processInstanceId,final String activityId){
        if (processInstanceId==null || processInstanceId.trim().equals("")||
                activityId==null || activityId.trim().equals("")){
            return null;
        }
        Object result = this.getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session arg0) throws HibernateException, SQLException {
                String hql = " from org.fireflow.engine.impl.WorkItem as model where model.taskInstance.processInstance.id=? and model.activityId=? and model.state=2";
                Query query = arg0.createQuery(hql);
                query.setString(0, processInstanceId);
                query.setString(1, activityId);
                return query.list();
            }
        });
        
        return (List)result;
    }
     */
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?