spring与jbpm4.4-基本部署(maven)以及一些常用服务的操作

上代码pom.xml

<properties>
        <!-- spring版本号 -->
        <spring.version>4.1.6.RELEASE</spring.version>
        <!--hibernate版本号 -->
        <hibernate.version>3.6.10.Final</hibernate.version>
        <spring-data-jpa>1.6.2.RELEASE</spring-data-jpa>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <junit.version>4.11</junit.version>
        <cglib.version>3.0</cglib.version>
        <jsonlib.version>2.4</jsonlib.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>
        <!-- spring3 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
        <!--spring上下文支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>${spring-data-jpa}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 使用Spring的aop时需要使用到aspectjweaver包,所以需要添加aspectjweaver包 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.4</version>
        </dependency>
        <!-- end spring -->
        <!-- JSR 303 with Hibernate Validator -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javassist/javassist -->
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.12.1.GA</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-commons-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate.common/hibernate-commons-annotations -->
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>4.0.2.Final</version>
        </dependency>
        <!-- hibernate -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.10.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-commons-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
        <!-- 二级缓存ehcache -->
        <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.10.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache-web -->
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-web</artifactId>
            <version>2.0.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!-- D:\wanglihu\apacemaven\changku\oracle\ojdbc14\14\ojdbc14-14.jar -->
        <dependency>
            <groupId>oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>14</version>
        </dependency>
        <!-- jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2.1-b03</version>
            <scope>provided</scope>
        </dependency>
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <!-- Json -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-lgpl</artifactId>
            <version>1.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-lgpl</artifactId>
            <version>1.8.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>${jsonlib.version}</version>
            <classifier>jdk15</classifier>
        </dependency>
        <!-- end of Json -->
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    <!-- 注入的方式可以用annotation -->
    <context:annotation-config />
    <context:component-scan base-package="com" />
    <aop:aspectj-autoproxy proxy-target-class="true" />

</beans>
 

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <context:component-scan base-package="com" />
    <bean id="fastJsonHttpMessageConverter"
        class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>application/json</value>
            </list>
        </property>
    </bean>
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="fastJsonHttpMessageConverter" />
            </list>
        </property>
    </bean>
    <!--这里可以看到我所有的页面引用到/extjs/**的资源都从/static/extjs里面进行查找。 -->
    <!-- <mvc:resources location="/extjs" mapping="/static/extjs/**"/> <mvc:resources 
        location="/js" mapping="/static/js/**"/> -->
    
    
    <!--freemarker视图解析器 -->
    <bean
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".ftl"></property>
        <property name="cache" value="false" />
        <property name="contentType" value="text/html;charset=UTF-8"></property>
        <property name="exposeRequestAttributes" value="true" />
        <property name="exposeSessionAttributes" value="true" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="requestContextAttribute" value="base"></property>
        <!-- 高值可以解释为低优先级 -->
        <property name="order" value="0"></property>
    </bean>
    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
        <!-- 高值可以解释为低优先级 -->
        <property name="order" value="1"></property>
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="maxUploadSize" value="10485760000"></property>
    </bean>

</beans>  

spring-jbpm.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!-- factory-bean通过实例工厂方法创建bean, class属性必须为空, factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置。 
        factory-method 定义工厂方法 -->

    <!-- JBPM4.4 配置 开始 -->
    <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
        <property name="jbpmCfg" value="jbpm.cfg.xml" />
    </bean>
    <!--JBPM工作流的引擎API  中心起点流程引擎API-->
    <bean id="processEngine" factory-bean="springHelper"
        factory-method="createProcessEngine" />
    <!-- 流程源服务接口。提供对流程定义的部署,查询,删除等操作 -->
    <bean id="repositoryService" factory-bean="processEngine"
        factory-method="getRepositoryService" />
    <!-- 流程执行服务接口。提供启动流程实例,"执行"推进,设置流程变量等操作 -->
    <bean id="executionService" factory-bean="processEngine"
        factory-method="getExecutionService" />
    <!-- 流程管理服务接口 -->
    <bean id="managementService" factory-bean="processEngine"
        factory-method="getManagementService" />
    <!-- 提供对任务列表的访问接口 -->
    <bean id="taskService" factory-bean="processEngine"
        factory-method="getTaskService" />
    <!-- 历史流程管理 -->
    <bean id="historyService" factory-bean="processEngine"
        factory-method="getHistoryService" />
    <!-- 组织机构管理 -->
    <bean id="identityService" factory-bean="processEngine"
        factory-method="getIdentityService" />
    <!-- JBPM4.4 配置 结束 -->

    <!--个人对jbpm进行了封装   各个服务的实现 ,以及对一些活动信息的查找功能 -->
    <!--beanid是 BaseService class:com.erp.service.BaseService-->

</beans>
 

spring-hibernate.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <context:property-placeholder location="classpath:jdbc.properties" />

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="${driverClassName}" />
        <property name="jdbcUrl" value="${jdbc_url}" />
        <property name="user" value="${jdbc_username}" />
        <property name="password" value="${jdbc_password}" />
        <property name="maxPoolSize" value="40" /> 
        <property name="minPoolSize" value="1" />
        <property name="initialPoolSize" value="1" />
        <property name="maxIdleTime" value="20" />
    </bean>

    <!-- 注入sessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--设置扫描的类路径 -->
        <property name="packagesToScan" value="com.cache" />
        <!--jbpm自带 -->
        <property name="mappingLocations">
            <list>
                <value>classpath:jbpm.execution.hbm.xml</value>
                <value>classpath:jbpm.history.hbm.xml</value>
                <value>classpath:jbpm.identity.hbm.xml</value>
                <value>classpath:jbpm.repository.hbm.xml</value>
                <value>classpath:jbpm.task.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=${hibernate.dialect}
                hibernate.hbm2ddl.auto=${hibernate.hbm2ddl.auto}
                hibernate.shou_sql=${hibernate.show_sql}
                hibernate.format_sql=${hibernate.format_sql}
                hibernate.cache.use_second_level_cache=${hibernate.use_second_level_cache}
                hibernate.cache.use_query_cache=${hibernate.use_query_cache}
                hibernate.cache.provider_class=${hibernate.provider_class}
                hibernate.cache.provider_configuration_file_resource_path=${hibernate.provider_configuration_file_resource_path}
            </value>
        </property>
    </bean>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 在这里我们使用的是jdbctemplate和hibernatetemplate混合的方式,我们的事务管理器就要注入相应的datasource 
        和sessionfactory而且jdbctemplate和hibernatetemplate必须使用相同的datasource否则 在jdbctemplate和hibernatetemplate混用的地方如果出现了异常那么就不会全部回滚,因为使用的不是相同 
        数据库连接 -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>
 

ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>  
<ehcache>  
  <!--如果缓存中的对象存储超过指定的缓存数量的对象存储的磁盘地址-->  
  <diskStore path="E:/ehcache"/>  
  
   <!-- 指定区域cache:通过name指定,name对应到Hibernate中的区域名即可-->
   <cache name="SimplePageCachingFilter"  
        maxElementsInMemory="10000"  
        maxElementsOnDisk="1000"  
        eternal="false"  
        overflowToDisk="true"  
        timeToIdleSeconds="5"  
        timeToLiveSeconds="30"  
        memoryStoreEvictionPolicy="LFU"/>
         
  <!-- 默认cache:如果没有对应的特定区域的缓存,就使用默认缓存 -->
  <!-- Ehcache 对象、数据缓存用以下配置 -->
  <defaultCache  maxElementsInMemory="10000"
        eternal="false" 
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskSpoolBufferSizeMB="30" 
        maxElementsOnDisk="10000000" 
        diskPersistent="false" 
        diskExpiryThreadIntervalSeconds="120"/>
  
</ehcache>  
<!--
   name:缓存名称。
   maxElementsInMemory:缓存最大个数。
   eternal:对象是否永久有效,一但设置了,timeout将不起作用。
   timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
   timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
   overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
   diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
   maxElementsOnDisk:硬盘最大缓存个数。
   diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
   diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
   memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
   clearOnFlush:内存数量最大时是否清除。 
  -->

jbpm.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
    <import resource="jbpm.default.cfg.xml" />
    <!-- <import resource="jbpm.tx.hibernate.cfg.xml" /> -->
    <import resource="jbpm.tx.spring.cfg.xml" />
    <import resource="jbpm.jpdl.cfg.xml" />
    <import resource="jbpm.bpmn.cfg.xml" />
    <import resource="jbpm.identity.cfg.xml" />
    <import resource="jbpm.businesscalendar.cfg.xml" />
    <import resource="jbpm.console.cfg.xml" />
    <!-- <import resource="jbpm.jobexecutor.cfg.xml" /> -->
    <hibernate-session-factory />
</jbpm-configuration>  
 

baseService.java

package com.erp.service;

import java.util.List;
import java.util.Map;

import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("BaseService")
public class BaseService {
    // 部署流程实例相关
    @Autowired
    private RepositoryService reService;
    // 创建执行流程实例相关
    @Autowired
    ExecutionService executionService;
    // 提供对任务列表的访问接口
    @Autowired
    TaskService taskService;

    // 流程定义的部署
    /**
     * 
     * @param filepath
     *            xml文件
     */
    public void respositoryService(String filepath) {
        this.reService.createDeployment().addResourceFromClasspath(filepath).deploy();
    }

    /**
     * 删除流程定义(如果带有流程实例没有完成的话会抛出异常,而deleteDeploymentCasecade不会,他会将你的没有完成的流程实例一并删除)
     */
    public void deleteDeployment(String deploymentId) {
        this.reService.deleteDeployment(deploymentId);
        System.out.println("删除成功");
    }

    /**
     * 删除流程定义与历史信息
     */
    public void deleteCacheDeployment(String deploymentId) {
        this.reService.deleteDeploymentCascade(deploymentId);
        System.out.println("删除成功");
    }

    /**
     * 
     * @param processDefinitionKey
     *            流程实例的key
     */
    // 创建流程实例
    public void initInstanceService(String processDefinitionKey) {
        ProcessInstance processInstance = this.executionService.startProcessInstanceByKey(processDefinitionKey);
        System.out.println("流程实例ID=======》" + processInstance.getId());
    }

    public void initInstanceByparameService(String processDefinitionKey, Map<String, Object> map) {
        ProcessInstance processInstance = this.executionService.startProcessInstanceByKey(processDefinitionKey, map);
        System.out.println("流程实例ID------》" + processInstance.getId());
    }

    /**
     * 删除流程实例
     * 
     * @param processInstanceId
     */
    public void deleteInstanceById(String processInstanceId) {
        this.executionService.deleteProcessInstance(processInstanceId);
        System.out.println("删除成功");
    }

    // 执行流程
    /**
     * 
     * @param taskId
     *            活动流程id
     */
    public void completeTaskService(String taskId) {
        this.taskService.completeTask(taskId);
        System.err.println("完成成功");
    }

    // executionService.createProcessInstanceQuery().processInstanceId("test.10001").uniqueResult().findActiveActivityNames().toString();
    // 根据流程实例Id查询流程所在节点
    /**
     * 
     * @param processDefinitionId
     *            流程实例Id
     * @return 流程实例所在节点的name
     */
    public String getCurrectActivity(String processDefinitionId) {
        String activityName = this.executionService.createProcessInstanceQuery()
                .processDefinitionId(processDefinitionId).uniqueResult().findActiveActivityNames().toString();
        return activityName;
    }

    /**
     * 
     * @param userName
     *            用户名
     * @return 该用户的活动信息 1 任务数量 2 任务id 3 任务名称 4 任务人员 。。。。
     */
    public List<Task> getTaskByName(String userName) {
        List<Task> tasks = this.taskService.findPersonalTasks(userName);
        System.out.println("任务数量==" + tasks.size());
        Task task = tasks.get(0);

        System.out.println("任务名词==" + task.getActivityName());
        System.out.println("任务人员==" + task.getAssignee() + "任务ID===" + task.getId());
        return null;
    }

}
测试代码
package com.erp.service;

import java.util.List;

import org.jbpm.api.IdentityService;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestService {

    ApplicationContext applicationContext;
    BaseService baservice;
    IdentityService identityService;
    TaskService taskService;

    public void init() {
        applicationContext = new ClassPathXmlApplicationContext(
                new String[] { "spring.xml", "spring-hibernate.xml", "spring-jbpm.xml" });
        identityService = (IdentityService) applicationContext.getBean("identityService");
        baservice = (BaseService) applicationContext.getBean("BaseService");
        taskService = (TaskService) applicationContext.getBean("taskService");
    }

    public void testTask() {
        // helloword.200001
        init();
        baservice.respositoryService("jbxr/helloworld.jpdl.xml");
        System.out.println("部署成功");
        // String processInstanceId = "260001";
        // this.baservice.deleteCacheDeployment("30001");
    }
    
    public void test() {
        init();
        System.out.println("hellozz");
        // Map<String, Object> maps = new HashMap<String, Object>();
        // UserInfo userInfo = new UserInfo();
        // userInfo.setUserName("ss");
        // maps.put("UserI", userInfo);
        // mgrs
        //String groups = identityService.createGroup("mgrs");
        //identityService.createUser("a1", "001giName", "002familyName");
        //identityService.createUser("a2", "002giName", "002familyName");
        //identityService.createMembership("a1", groups);
        //identityService.createMembership("a2", groups);
        baservice.initInstanceService("helloword");
        // baservice.initInstanceByparameService("helloword", maps);
        // helloword.110001
        System.out.println("hellozz");
    }

    // //把任务分配给a1
    // taskService.takeTask("480002", "a1");
    // List<Task> tasks = taskService.findPersonalTasks("a1");
    // print("任务数量",tasks.size());
    // print("任务名词",tasks.get(0).getActivityName());
    // print("任务ID",tasks.get(0).getId());
    //
    // 获取任务列表(获取任务组任务列表)
    //
    // 通过findGroupTasks可以拿到组任务。可以显示在每个收到此任务的人的代办任务列表中。
    //
    // List<Task> tasks = taskService.findGroupTasks("a1");
    // print("任务数量",tasks.size());
    // print("任务名词",tasks.get(0).getActivityName());
    // print("任务ID",tasks.get(0).getId());
    //
    // 完成任务
    //
    // taskService.completeTask("390001");
    //

    // 完成任务
    
    public void testcompleteTask() {
        init();
        baservice.completeTaskService("130002");
        System.out.println("任务50002完成");

    }
    // 任务分派模式
    //
    // jBPM的任务分派有两种模式,分别是推(push)模式和拉(pull)模式。
    //
    // 推模式是在任务分派的时候,直接将任务实例分派给一个指定的用户,任务实例进入这个用户的个人任务列表中。
    //
    // 拉模式是将任务实例分派给一组用户,这个任务实例会出现在组所有用户的组任务列表中。组用户需要首先将任务实例拉到自己的个人任务列表中才能够执行此任务。当有一个组用户取出了任务实例后,引擎就会将该任务实例从其他的组用户的组任务列表中去除。
    @Test
    public void testgetTask() {
        init();
        // taskService.takeTask("100007", "a1");
        //baservice.getTaskByName("a1");
        List<Task> tasks = taskService.findGroupTasks("a2");
        System.out.println("任务数量" + tasks.size());
        System.out.println("任务名词" + tasks.get(0).getActivityName());
        System.out.println("任务ID" + tasks.get(0).getId());
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值