之前的博文中有讲到怎么单独的配置工作流工程。现在就接着说如何将工作流程图与Web整合。在整合Web首先就
来与Spring进行整合。
整合spring有一下些操作步骤:
1.复制整合包spring-modules-jbpm31.jar
2.把Action三大接口类配置在spring的applicationContext.xml
如:
<!-- action 动作接口-->
<bean id="endAction" class="com.jbpm.action.EndAction"></bean>
<bean id="startAction" class="com.jbpm.action.StartAction"></bean>
<!-- assignment 委类接口-->
<bean id="bossAssignment" class="com.jbpm.assignment.BossAssignment"></bean>
<bean id="managerAssignment" class="com.jbpm.assignment.ManagerAssignment"></bean>
<bean id="writerAssignment" class="com.jbpm.assignment.WriterAssignment"></bean>
<!-- 判定 接口-->
<bean id="moneyDecision" class="com.jbpm.decision.MoneyDecision"></bean>
3在applicationContext.xml配置一个读取jbpm配置文件类
如:
<bean id="jbpmConfig" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="configuration" value="classpath:org/jbpm/default.jbpm.cfg.xml"></property>
</bean>
//org/jbpm/default.jbpm.cfg.xml 为jbpm.cfg.xml 文件中的
4.把jbpm设计图关联图中的动作、事件类全部改为代理JbpmHandlerProxy
在。org.springmodules.workflow.jbpm31.JbpmHandlerProxy
类型改为bean,注入配置文件类和aciton类
//下面的这两个属性需要在配置文件(processdefinition.xml)中代码中手动添加
<factoryKey>jbpmConfig</factoryKey>
<targetBean>bossAction</targetBean>
如:<start-state name="开始">
<transition name="" to="写报销单"></transition>
<event type="node-leave">
<action name="开始" class="org.springmodules.workflow.jbpm31.JbpmHandlerProxy" config-type="bean">
<factoryKey>jbpmConfig</factoryKey>
<targetBean>startAction</targetBean>
</action>
</event>
</start-state>
//jbpmConfig :步骤3中所配置的 id值 startAction:步骤1中所对应的动作接口 id值
5.把测试类继承为JbpmDaoSupport类
并把测试类在applicationContext.xml中配置bean
如:<!-- 测试类 -->
<bean id="jbpmTest" class="com.test.Test">
<property name="jbpmConfiguration" ref="jbpmConfig"></property>
</bean>
6.测试
测试类在整合spring之后与web的关联操作。
如下:
//读取配置文件
private JbpmConfiguration getConfig(){
return super.getJbpmConfiguration();
}
//读取上下文件
private JbpmContext getContext(){
JbpmContext context = getConfig().getCurrentJbpmContext();
if (context==null)
context = getConfig().createJbpmContext();
return context;
}
//建表
private void createTable(){
getConfig().createSchema();
}
//发布
private void deployProcessionDefintion(){
ProcessDefinition pd = ProcessDefinition.parseXmlResource("simple/processdefinition.xml");
pd.setName("s09报销单");
getContext().deployProcessDefinition(pd);
getContext().close();
}
//开启流程实例
private void createInstance(String pname,String name){
ProcessDefinition pd = getContext().getGraphSession().findLatestProcessDefinition("s09报销单");
ProcessInstance pi = pd.createProcessInstance();
pi.getContextInstance().setVariable("start", name);
pi.signal();
getContext().close();
}
//写报销单
private void writer(String name,float money,String msg){
Session session = getContext().getSession();
String hql = "from TaskInstance where ACTORID_=? and END_ is null";
Query query = session.createQuery(hql);
query.setParameter(0, name);
List<TaskInstance> list =query.list();// getContext().getTaskList(name);
//System.out.println(list.size());
if (list!=null)
for (TaskInstance ti : list) {
if (ti.getName().equals("写报销单")){
//System.out.println("进来了没有");
ti.setVariable("money", money);
ti.setVariable("msg", msg);
ti.end();
break;
}
}
getContext().close();
}
// 领导审批
private void agree(int tid,boolean agree){
TaskInstance ti = getContext().getTaskInstance(tid);
if (ti!=null){
String old = (String) ti.getVariable("status");
if (agree)
{
ti.setVariable("status", old+"(同意)");
ti.end("同意");
}
else{
ti.setVariable("status", old+"(不同意)");
ti.end("不同意");
}
getContext().close();
}
}
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Test test = (Test) context.getBean("jbpmTest");
//test.createTable();
//test.deployProcessionDefintion();
//test.createInstance("s09报销单", "小李子");
//test.writer("小李子", 3000, "坐车");
//test.agree(6, false);
}
分享到:
相关推荐
本文将深入探讨如何利用Spring实现工作流,以及如何通过Spring的依赖注入特性将业务模块灵活地整合在一起。 首先,我们需要理解Spring框架的核心概念——依赖注入(Dependency Injection,简称DI)。依赖注入是...
总结来说,"jbpm+spring的web简单借款工作流实例项目"是一个融合了流程管理、服务集成和Web交互的综合案例,涵盖了jbPM流程设计、Spring框架整合、数据库操作以及Web应用开发等多个方面,对于学习和实践企业级业务...
将Spring与Activiti整合,可以充分利用Spring的强大功能来管理和驱动Activiti工作流,实现灵活、可扩展且易于维护的业务流程解决方案。 1. **Spring框架**:Spring是一个开源的Java平台,提供了全面的企业应用程序...
jbpm+spring的web简单借款工作流实例项目是一个基于jbpm和Spring框架的示例应用,旨在演示如何在Web环境中实现一个简单的借款流程。这个项目的核心是利用jbpm(Java Business Process Management)作为工作流引擎,...
在本文中,我们将详细介绍如何使用 Spring 创建一个简单的工作流,并探讨工作流的定义、工作流模式、顺序工作流模式、使用 Spring 创建工作流组件等方面的内容。 工作流的定义 工作流是指不需要用户交互,按预定...
在本项目中,"springboot整合activity工作流审批前后台代码(有数据库)"是一个基于Spring Boot框架的应用,用于实现企业内部的工作流程审批系统。这个系统涵盖了员工、部门经理和BOSS三个不同的审批角色,旨在提供...
总结来说,这个项目是一个典型的Java企业级应用,通过结合Activiti的工作流管理和Spring MVC的Web开发能力,为开发者提供了一个完整的业务流程自动化解决方案。通过深入学习和实践,你可以掌握如何利用这些技术构建...
分析这个源码,我们可以深入理解OSGI环境下这些组件如何协同工作,以及如何在实际项目中实现类似的功能。 总的来说,这个案例展示了OSGI的模块化优势,以及如何将Spring、Mybatis和Spring MVC集成到OSGI环境中,...
根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入...无论是多步骤表单的处理还是复杂的工作流管理,Spring Web Flow都能够提供一套完整的解决方案,极大地提升了开发效率和用户体验。
安全性是任何应用程序都必须考虑的关键因素,Spring Web Flow提供了多种机制来保护工作流免受未经授权的访问。 #### 8.2 How do I secure a flow? 工作流的安全性可以通过多种方式实现,包括权限检查、角色分配、...
Spring MVC、Hibernate 和 Maven 是Java Web开发中的三个关键框架,它们各自在应用程序的不同层面发挥着重要作用。本项目是一个综合性的实例,将这三个框架整合在一起,为开发者提供了一个完整的Web应用程序开发环境...
在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...
例如,基于Struts的Web应用通常利用框架的Action和视图来实现页面流,但这会导致流程定义散乱,难以维护和理解,同时也限制了组件的重用性。 ### SWF如何改善页面流程管理 Spring Web Flow通过引入状态机的概念来...
在这个"activity工作流web工程demo例子"中,我们看到它与Hibernate ORM框架和MySQL数据库相结合,构建了一个完整的示例项目,旨在帮助开发者理解和应用工作流管理。 1. **Activity工作流**:Activity是基于BPMN 2.0...
在Spring Web Flow项目中应用Hessian服务,是一个深入整合分布式服务和前端流程管理的重要实践。Spring Web Flow(SWF)是一个强大的MVC框架,用于构建具有复杂导航逻辑的Web应用程序,而Hessian则是一种轻量级的二...
《Spring Web Flow 2之Web开发》是一本深入讲解基于Spring框架的Web应用程序流程管理的专著。本书主要探讨如何使用Spring Web Flow (SWF) 2构建动态、交互式的Web应用,它允许开发者优雅地处理用户会话的流程控制。...
Activiti 是一个开源的工作流和业务流程管理(BPM)平台,它被广泛应用于构建企业级的应用程序。这个"activiti 基础 web项目 spring mvc.zip"压缩包文件显然是一个教学或示例项目,旨在帮助开发者了解如何在Spring ...
这个基础Web项目将演示如何通过Spring MVC处理HTTP请求,调用服务层实现业务逻辑,然后与Activiti交互来执行工作流程。Activiti的工作流程可以通过图形化设计器定义,它可以处理审批流程、任务分配等复杂的业务流程...
Spring Web Flow特别适用于需要复杂用户交互和流程管理的场景,如表单验证、多步骤的购物流程、工作流管理等。通过合理的配置和设计,它可以帮助开发者构建出符合用户需求、易于扩展和维护的Web应用。
通过这个“Spring整合Mybatis项目-影视资源管理”,初学者可以了解到如何在实际项目中将Spring的控制反转和面向切面编程能力与Mybatis的灵活SQL操作相结合,实现一个功能完善的系统。这个过程不仅涉及技术的实践,...