`

jbpm---example

    博客分类:
  • Jbpm
阅读更多
这些都被传智播客封装了的例子。。我只是抄下来而已

使用:
deployProcessDefinition.jsp

JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
DiskFileUpload fileUpload = new DiskFileUpload();
List list  = fileUpload.parseRequest(request);
Iterator iterator = list.iterator();
FileItem  fileItem = (FileItem)iterator.next();

if(fileItem.getContentType().indexOf("application/x-zip-compressed") == -1){
  throw new Exception("Only zip format is accepted!");
}

try{
  WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine()
  String pdname = workflowEngine.deployProcessDefinition(fileItem.getInputStream(),null);
  out.println("流程定义部署成功:"+pdname);

}catch(Exception e){
   
}

jbpmContext.close();

--------------------------------------------------------------------------------

saveQingjiaForm.jsp //注意,先填写请假表单,然后就到这个页面
//这个页面有两个功能,一个是提交给下一个人,一个只是单独保存,而不提交


QingjiaForm qingjiaForm = new QingjiaForm();
qingjiaForm.setApplier((String)session.getAttribute("actorId"));
qingjiaForm.setNday(Integer.parseInt(ndays));
qingjiaForm.setReason(reason);

if("commit".equals(actionType)){  
   qingjiaForm.setState(QingjiaForm.SENT); 
}else{
   qingjiaForm.setState(QingjiaForm.INITIAL);
}

JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
jbpmContext.getSession().save(qingjiaForm) ; //先把这个表单放到自己的数据库中

if("commit".equals(actionType)){ //如果是提交,那么需要启动工作流引擎

 	WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine();
 	
 	Map varMap = new HashMap();
 	varMap.put("infoid",qingjiaForm.getId());
 	
 	//因为是请假,那么流程定义的名字肯定是知道的,这里就叫做qingjia
 	//第二个是提交给谁,这个因为在表单填写的时候由用户指定,当然也是传过来的
 	//String pdname,String starter,String version,Map varMap
 	workflowEngine.startProcess("qingjia",(String)session.getAttribute("actorId"),varMap);

}


--------listTaskInstances.jsp-->openTask.jsp--------------------------------------------------------
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
Session session = jbpmContext.getSession();
Criteria rootCriteria = session.createCriteria(TaskInstance.class);

String pdname = request.getParameter("pdname");
String actorId = request.getParameter("actorId");
String tname = request.getParameter("tname");
String tstate = request.getParameter("tstate");

WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine();
WorkitemCriteria workitemCriteria = new WorkitemCriteria();
workitemCriteria.setPdname(pdnane);
workitemCriteria.setTname(tname);
workitemCriteria.setActorId((String)session.getAttribute("actorId"));

String pageNum = request.getParameter("pageNum");
pageNum = pageNum == null || pageNum.equals("")?"0":pageNum;
int everyPage = workitemCriteria.getNeveryPage();
int target = Integer.parseInt(pageNum);
int startNum = targetPage * everyPage;

workitemCriteria.setStart(startNum);
workitemCriteria.setStatus(tstate);

PagedObject po = workflowEngine.getWorklist(workitemCriteria);

pageContext.setAttribute("list",po.getResult());

<c:forEach items="${list}" var="ti">
  <a href="<c:url value="/sysadmin/openTask.jsp?tiid=${ti.id}" />"><c:out value="ti.name" /></a>
</c:forEach>

--------------------------------------------------------------------
OpenTask.jsp  对应办理任务

String tiid = request.getParameter("tiid");
WorkflowEngine workflowEngine.takeWorkitem(null,tiid);

pageContext.forward(view+"?tiid="+tiid);

------------------------------------------------
auditQingjiaForm.jsp --->endTask.jsp
Long tiid = Long.parseLong(request.getParameter("tiid"));
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
TaskInstance ti = jbpmContext.loadTaskInstance(tiid);
pageContext.setAttribute("tokenId",ti.getToken().getId());
Long infoid = (Long)ti.getProcessInstance().getContextInstance().getVariable("infoid");
QingjiaForm qingjiaForm = (QingjiaForm)jbpmContext.getSession().get(QingjiaForm.class,infoid);

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...有些请假的信息
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<input type="hidden" name="tiid" value="<%=tiid%>" />
List list = ti.getTask().getTaskNode().getLeavingTransitions();
pageContext.setAttribute("nextTrans",list);
if(list.size()>1){
  <select name="nextPath">
     <c:forEach items="${nextTrans}" var="nextTran" varStatus="s">
        <option value="<c:out value="${nextTran.name}"/>"><c:out value="${nextTran.name}"/></option>
     </c:forEach>
  </select>

}

<input type="submit" value="提交任务" />


----------------------------------------------

endTask.jsp

String tiid = request.getParameter("tiid");
String transitionName = request.getParameter("nextPath");
String actorId = request.getParameter("actorId");
ti.getProcessInstance().getContextInstance().setVariable("currentUser",session.getAttribute("actorId"));

WorkflowEngine workflowEngine = ServiceLocator.getWorkflowEngine();
workflowEngine.completeWorkitem(tiid,new NextStep(transitionName.actorId));
分享到:
评论

相关推荐

    Spring-Jbpm-JSF-Example.pdf

    根据给定的文件信息,我们可以总结出以下关于“Spring-Jbpm-JSF-Example”的关键IT知识点: ### 1. **项目概述** 标题与描述提到的“Spring-Jbpm-JSF-Example.pdf”是一个示例项目,展示了如何将Spring框架、Jbpm...

    jbpm7示例(jbpm-7.3.0.Final-examples)

    2017年jBPM 正式发布了全新的 7版本。jBPM 是一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来...

    jbpm-services-example:jBPM Serivces API示例

    jBPM Services REST项目该项目的目的是展示如何轻松地将jBPM服务api(带有ejb实现)用于在Java EE应用程序中嵌入jBPM。去做说明必要的组件(持久性单元,用户组回调机制) 我们是否需要此项目中的自定义回调或仅需要...

    example-jbpm-test-harness

    示例 JBPM 测试工具该项目旨在提供一个简单的示例,展示 JBPM 和 BPM 套件安装中提供的 jbpm-test 项目中可用的完整测试功能。扩展 BaseBPMNTest 这个类是测试工具的核心。 它充当一个简单的父级,为每个测试初始化...

    jbpm4.4的安装myeclipse配置还有helloworld实例

    - 运行 `ant load.example.identities` 命令来加载示例用户和用户组数据到 MySQL 数据库。 - **测试**: - 启动 Tomcat 服务器。 - 在浏览器中访问 `http://localhost:8080/jbpm-console`,如果页面正常显示,则...

    embedding-jbpm-forms-example:这是如何在客户端应用程序中嵌入表单的示例

    "embedding-jbpm-forms-example" 是一个项目名称,它专注于演示如何在客户端应用程序中集成和使用 jBPM(JBoss Business Process Management)的表单功能。jBPM 是一个开源的工作流和业务流程管理平台,它允许开发者...

    JBPM安装指南

    - `ant load.example.identities` - `ant start.tomcat` 这些命令会完成JBPM的部署,启动数据库服务,创建JBPM所需的数据库架构,安装示例项目,并启动Tomcat服务器。 最后,验证JBPM的安装: 1. **访问控制台*...

    jbpm5第一个例子

    http://www.mastertheboss.com/jbpm5/jbpm-5-tutorial-first-example 一般不会的问题,从官方找就行,但上面说的也不详细,结果搞了一天也没通,后来把条件直接换成 true就行了,也不用什么return money&gt;1000了。 ...

    jbpm4.2开发文档

    ### jbpm4.2开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...

    osworkflow-example-demo.rar_DEMO_com.example.demo_osworkflow e

    这个"osworkflow-example-demo.rar"是一个示例项目,包含了OSWorkflow的源代码和一个经典的实例,适用于初学者学习和理解工作流管理系统的工作原理。由于不包含数据库和流程设计器,因此可能需要用户自行配置和设计...

    jbpm学习笔记.docx

    jbpm学习笔记主要涵盖了jbpm(Java Business Process Management)的多个方面,包括Signavio的使用和配置、jBPM数据库的安装、Graphical ...同时,通过阅读和分析example项目,可以更好地理解和应用jBPM的实际操作。

    jbpm jpdl 帮助文档pdf版

    根据提供的文件信息,我们可以深入探讨jbpm jpdl帮助文档中的关键知识点。该文档主要围绕jBPM(一款开源的工作流引擎)以及其图形化过程设计语言jpdl进行介绍。接下来,我们将按照文档的大纲顺序来解析各个部分所...

    jbpm jar java

    【jbpm jar java】——深入理解jbpm与Java的整合应用 jbpm,全称是JBoss Business Process Management,是一款开源的工作流管理系统,主要用于处理业务流程的建模、执行和监控。jbpm的设计目标是提供一个灵活且强大...

    JBPM的使用与简单的操作

    把JBoss安装到${jbpm.home}/jboss-5.0.0... 从${jbpm.home}/install/src/demo/example.identities.sql,读取用户和组。 安装eclipse到${jbpm.home}/eclipse 启动eclipse 安装jBPM web控制台 安装Signavio web建模器

    斯坦福特jbpm培训ppt不错的资料噢

    &lt;assignment handler="com.example.ManagerAssignment" /&gt; &lt;/task-state&gt; &lt;!-- 更多任务和状态定义 --&gt; ``` 3.2 配置流程启动与监听 在Struts或Spring MVC中,配置流程的启动方法,比如在提交请假申请时启动...

    jBPM4.4 安装在Tomcat+MySql环境

    - `ant load.example.identities`:加载示例用户和用户组数据到MySQL数据库。 - `ant install.signavio.into.tomcat`:将Signavio模型设计器安装到Tomcat。 - `ant install.eclipse`:解压`JBPM_HOME\install\...

Global site tag (gtag.js) - Google Analytics