jbpm与ssh完整示例(三)

 

1编写测试的主体页面index_demo.jsp

index_demo.jsp代码如下:

<%@ page contentType="text/html;charset=UTF-8"%>

<%@ include file="/commons/taglibs.jsp"%>

  <head>

    <title>My JSP 'index_demo.jsp' starting page</title>

  </head>

 

  <body>

    <a href="${ctx}/workflow/deployjbpm.jsp">流程部署</a><br>

    <a href="${ctx}/jbpmdemo.do?method=createDoc">创建公文</a><br>

    <a href="${ctx}/jbpmdemo.do?method=bingDoc">将公文与流程绑定(即需要创建流程实例)</a><br>

    <a href="${ctx}/jbpmdemo.do?method=submitDoc">公文创建者提交公文</a><br>

    <a href="${ctx}/jbpmdemo.do?method=getNode">当前所处的节点</a><br>

    <a href="${ctx}/jbpmdemo.do?method=getTask">某用户的是否有公文等待其审批</a><br>

    <a href="${ctx}/jbpmdemo.do?method=goNext">查找到当前的任务对应的公文之后,即可对其审批,并继续流转</a><br>

    <a href="${ctx}/jbpmdemo.do?method=isFinish">到达终点</a><br>

    <a href="${ctx}/workflow.do?method=viewImage&id=246" target="_blank">查看</a><br> 

  </body>

</html>

 

2 对应的action文件

/*******************************************************************************

 * 文件名:JbpmDemo.java<br>

 * 版本: <br>

 * 描述:  <br>

 * 版权所有: <br>

 * <br>

 * 创建者: 沙振中 <br>

 * 创建日期: Jan 9, 2009 <br>

 * 修改者:  <br>

 * 修改日期:  <br>

 * 修改说明:  <br>

 ******************************************************************************/

package com.shane.security.web;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

 

import com.shane.commons.core.web.StrutsAction;

import com.shane.security.service.WorkflowDemoManager;

 

public class JbpmDemoAction extends StrutsAction {

 

         private static Log log = LogFactory.getLog(JbpmDemoAction.class);

        

         private WorkflowDemoManager workflowDemoManager;

        

         public void setWorkflowDemoManager(WorkflowDemoManager workflowDemoManager) {

                   this.workflowDemoManager = workflowDemoManager;

         }

   

    public ActionForward createDoc(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.createDoc();

             return mapping.findForward("succeed");

         }

   

    public ActionForward bingDoc(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.bingDoc();

             return mapping.findForward("succeed");

         }

    public ActionForward submitDoc(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.submitDoc();

             return mapping.findForward("succeed");

         }

    public ActionForward getNode(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.getNode();

             return mapping.findForward("succeed");

         }

    public ActionForward getTask(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.getTask();

             return mapping.findForward("succeed");

         }

    public ActionForward goNext(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.goNext();

             return mapping.findForward("succeed");

         }

   

    public ActionForward isFinish(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             workflowDemoManager.isFinish();

             return mapping.findForward("succeed");

         }

 

}

 

3本示例与公文表绑定,在现实的业务当中,流程的流转同样需绑定业务公文表单。此例为简单公文示例。

3.1公文表

public class Document {

    private int id;

    private String title;

    private String content;

    private String creator;

    private Long processIntanceId;

   

    public String getContent() {

       return content;

    }

    public void setContent(String content) {

       this.content = content;

    }

    public String getCreator() {

       return creator;

    }

    public void setCreator(String creator) {

       this.creator = creator;

    }

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getTitle() {

       return title;

    }

    public void setTitle(String title) {

       this.title = title;

    }

    public Long getProcessIntanceId() {

       return processIntanceId;

    }

    public void setProcessIntanceId(Long processIntanceId) {

       this.processIntanceId = processIntanceId;

    }

}

 

3.2相关hibernate配置文件

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

  <class table="T_Document" name="com.shane.security.model.Document">

    <id name="id">

      <generator class="increment"/>

    </id>

    <property name="title"/>

    <property name="content"/>

    <property name="creator"/>

    <property name="processIntanceId"/>

  </class>

</hibernate-mapping>

 

 

4 service类实现

4.1接口定义

 

public interface WorkflowDemoManager {

    public void createDoc();

    public void bingDoc();

    public void submitDoc();

    public void getNode();

    public void getTask();

    public void goNext();

    public void isFinish();

}

4.2 类实现

import java.util.Iterator;

import java.util.List;

 

import org.jbpm.JbpmConfiguration;

import org.jbpm.JbpmContext;

import org.jbpm.graph.def.ProcessDefinition;

import org.jbpm.graph.exe.ProcessInstance;

import org.jbpm.taskmgmt.exe.TaskInstance;

 

import com.shane.commons.core.dao.HibernateEntityDao;

import com.shane.security.model.Document;

 

public class WorkflowDemoManagerImpl extends HibernateEntityDao implements

                   WorkflowDemoManager {

         private JbpmConfiguration jbpmConfiguration;

 

         public void setJbpmConfiguration(JbpmConfiguration jbpmConfiguration) {

                   this.jbpmConfiguration = jbpmConfiguration;

         }

 

         private JbpmContext getJbpmContext() {

                   JbpmContext context = jbpmConfiguration.getInstance()

                                     .createJbpmContext();

                   context.setSession(this.getSession());

                   return context;

         }

 

         public void bingDoc() {

                   // 从数据库中加载ProcessDefinition对象

                   ProcessDefinition definition = getJbpmContext().getGraphSession()

                                     .findLatestProcessDefinition("文档测试流程");

 

                   // 从流程中创建一个流程实例

                   ProcessInstance processInstance = new ProcessInstance(definition);

 

                   // 存储流程实例

                   getJbpmContext().save(processInstance);

 

                   // 加载公文

                   Document doc = (Document) getJbpmContext().getSession().load(

                                     Document.class, 3);

 

                   // 绑定流程实例到公文

                   doc.setProcessIntanceId(processInstance.getId());

 

                   // 绑定公文到流程实例(ContextInstance相当于一个变量的容器)

                   processInstance.getContextInstance().createVariable("document",

                                     doc.getId());

 

                   getJbpmContext().close();

                   log.info("____________________绑定公文和流程!");

         }

 

         public void createDoc() {

                   Document doc = new Document();

                   doc.setTitle("标题");

                   doc.setContent("内容");

                   doc.setCreator("创建人");

                   save(doc);

                   log.info("____________________创建公文!");

         }

}

 

 

注首先要先执行createDoc创建公文方法,之后bingDoc将公文与流程绑定(即需要创建流程实例)方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值