首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

小弟我的Activiti例子

2013-10-19 
我的Activiti例子package comimport org.activiti.bpmn.converter.BpmnXMLConverterimport org.activiti

我的Activiti例子

package com;import org.activiti.bpmn.converter.BpmnXMLConverter;import org.activiti.bpmn.model.BpmnModel;import org.activiti.editor.constants.ModelDataJsonConstants;import org.activiti.editor.language.json.converter.BpmnJsonConverter;import org.activiti.engine.*;import org.activiti.engine.form.StartFormData;import org.activiti.engine.form.TaskFormData;import org.activiti.engine.history.HistoricProcessInstance;import org.activiti.engine.repository.Deployment;import org.activiti.engine.repository.Model;import org.activiti.engine.repository.ProcessDefinition;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.node.ObjectNode;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;import java.io.FileOutputStream;import java.io.IOException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created with IntelliJ IDEA. * User: pandy * Date: 13-9-16 * Time: 上午9:36 * To change this template use File | Settings | File Templates. */@Controller@RequestMapping("/a")public class TestController {    @Resource(name = "taskService")    private TaskService taskService;    @Resource(name = "runtimeService")    private RuntimeService runtimeService;    @Resource(name = "repositoryService")    private RepositoryService repositoryService;    @Resource(name = "formService")    private FormService formService;    @Resource(name = "historyService")    private HistoryService historyService;    /**     * 获得一些查询列表     *     * @return     */    @RequestMapping("/list")    public ModelAndView list() {        ModelAndView view = new ModelAndView("list");        List<Task> tasks = taskService.createTaskQuery().list();        view.addObject("tasks", tasks);        view.addObject("message", "This is a message.");        List<Model> modelList = repositoryService.createModelQuery().list();        view.addObject("modelList", modelList);        List<Deployment> deploymentList = repositoryService.createDeploymentQuery().list();        view.addObject("deploymentList", deploymentList);        List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().list();        view.addObject("processDefinitionList", processDefinitionList);        return view;    }    /**     * 创建一个modeler     *     * @return     */    @RequestMapping("/create")    public ModelAndView create() {        Date d = new Date();        String str = "Pandy_" + d.getTime() + "";        try {            ObjectMapper objectMapper = new ObjectMapper();            ObjectNode editorNode = objectMapper.createObjectNode();            editorNode.put("id", "canvas");            editorNode.put("resourceId", "canvas");            ObjectNode stencilSetNode = objectMapper.createObjectNode();            stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");            editorNode.put("stencilset", stencilSetNode);            Model modelData = repositoryService.newModel();            ObjectNode modelObjectNode = objectMapper.createObjectNode();            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, str);            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, str);            modelData.setMetaInfo(modelObjectNode.toString());            modelData.setName(str);            modelData.setKey(str);            repositoryService.saveModel(modelData);            repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));        } catch (Exception e) {            e.printStackTrace();        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 删除一个已经部署的实例     *     * @param id     * @return     */    @RequestMapping("/deleteModeler")    public ModelAndView deleteModeler(@RequestParam("id") String id) {        System.out.println("id=" + id);        try {            repositoryService.deleteModel(id);        } catch (Exception e) {            e.printStackTrace();        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 部署一个Modeler     *     * @param id     * @return     */    @RequestMapping("/deployModel")    public ModelAndView deployModel(@RequestParam("id") String id) {        System.out.println("id=" + id);        Deployment deployment = null;        try {            Model modelData = repositoryService.getModel(id);            ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(                    repositoryService.getModelEditorSource(modelData.getId())            );            byte[] bpmnBytes = null;            BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);            bpmnBytes = new BpmnXMLConverter().convertToXML(model);            String processName = modelData.getName() + ".bpmn20.xml";            deployment = repositoryService.createDeployment()                    .name(modelData.getName())                    .addString(processName, new String(bpmnBytes))                    .deploy();        } catch (Exception e) {            e.printStackTrace();        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 删除一个已经部署的实例     *     * @param id     * @return     */    @RequestMapping("/deleteDeploy")    public ModelAndView deleteDeploy(@RequestParam("id") String id) {        System.out.println("id=" + id);        try {            repositoryService.deleteDeployment(id,false);        } catch (Exception e) {            e.printStackTrace();        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 启动已经部署工作流     *     * @return     */    @RequestMapping("/start")    public ModelAndView start(@RequestParam("id") String defId) {        Map<String, Object> variables = new HashMap<String, Object>();       /* variables.put("employeeName", "Kermit");        variables.put("numberOfDays", new Integer(4));        variables.put("vacationMotivation", "I'm really tired!");*/        //启动        System.out.println("启动");        //ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variables);        ProcessInstance processInstance = runtimeService.startProcessInstanceById(defId, variables);        //StartFormData formData = formService.getStartFormData(processInstance.getProcessDefinitionId());        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 完成一个节点     *     * @param id     * @return     */    @RequestMapping("/complete")    public ModelAndView complete(@RequestParam("id") String id) {        //List<Task> list = taskService.createTaskQuery().taskDefinitionKey(id).list();        List<Task> list = taskService.createTaskQuery().taskId(id).list();        if (list != null && !list.isEmpty()) {            for (Task task : list) {                TaskFormData formData = formService.getTaskFormData(task.getId());                taskService.complete(task.getId());            }        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 导出流程     *     * @param fileName     * @param bpmnBytes     */    public void exportFile(String fileName, byte[] bpmnBytes) {        fileName = "/mnt/D/work_documents/workspace/ActivitiTemp/src/main/resources/diagrams/" + fileName;        System.out.println(fileName);        FileOutputStream fos = null;        try {            fos = new FileOutputStream(fileName, true);            fos.write(bpmnBytes);            fos.flush();        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                fos.close();            } catch (IOException iex) {            }        }    }    /**     * 启动已经部署工作流     *     * @return     */    @RequestMapping("/start1")    public ModelAndView start1() {        Map<String, Object> variables = new HashMap<String, Object>();       /* variables.put("employeeName", "Kermit");        variables.put("numberOfDays", new Integer(4));        variables.put("vacationMotivation", "I'm really tired!");*/        //启动        System.out.println("启动");        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variables);        StartFormData formData = formService.getStartFormData(processInstance.getProcessDefinitionId());        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 启动已经部署工作流     *     * @return     */    @RequestMapping("/start2")    public ModelAndView start2() {        Map<String, Object> variables = new HashMap<String, Object>();       /* variables.put("employeeName", "Kermit");        variables.put("numberOfDays", new Integer(4));        variables.put("vacationMotivation", "I'm really tired!");*/        //启动        System.out.println("启动");        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variables);        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 启动已经部署Form工作流     *     * @return     */    @RequestMapping("/start3")    public ModelAndView start3() {        Map<String, Object> variables = new HashMap<String, Object>();       /* variables.put("employeeName", "Kermit");        variables.put("numberOfDays", new Integer(4));        variables.put("vacationMotivation", "I'm really tired!");*/        //启动        System.out.println("启动");        Map<String, String> properties = new HashMap<String, String>();        ProcessInstance processInstance = formService.submitStartFormData("xxxxx", properties);        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }    /**     * 这只是一个测试的方法     *     * @return     */    @RequestMapping("/mytest")    public ModelAndView mytest() {        System.out.println("开始执行工作流的方法");        //发布        System.out.println("发布");        repositoryService.createDeployment()                .addClasspathResource("bpmn/MyProcess.bpmn")                .deploy();        Map<String, Object> variables = new HashMap<String, Object>();       /* variables.put("employeeName", "Kermit");        variables.put("numberOfDays", new Integer(4));        variables.put("vacationMotivation", "I'm really tired!");*/        //启动        System.out.println("启动");        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variables);        //遍历任务        System.out.println("遍历所有");        //List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("management").list();        //List<Task> tasks = taskService.createTaskQuery().taskCandidateUser("test").list();        List<Task> tasks = taskService.createTaskQuery().taskAssignee("test").list();        for (Task task : tasks) {            System.out.println("#Task available: " + task.getId() + ":" + task.getName());            Map<String, Object> taskVariables = new HashMap<String, Object>();            //taskService.complete(task.getId(), taskVariables);            System.out.println("complete#Task: " + task.getId() + ":" + task.getName());        }        //查看任务        System.out.println("遍历所有");        tasks = taskService.createTaskQuery().list();        for (Task task : tasks) {            System.out.println("@Task available: " + task.getId() + ":" + task.getName());        }        String url = "redirect:/a/list.do";        return new ModelAndView(url);    }}





<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%><%    String path=request.getContextPath();%><html><head>    <title></title>    <style>        table,tr,th,td{            border: 1px solid #000000;        }    </style></head><body><br>模型列表: 创建模型: <a href="<%=path%>/a/create.do">Create</a><table border="0">    <tr>        <th>ID</th>        <th>Key</th>        <th>Name</th>        <th>编辑</th>        <th>部署</th>        <th>删除</th>    </tr>    <c:forEach items="${modelList}" var="t">        <tr>            <td>${t.id}</td>            <td>${t.key}</td>            <td>${t.name}</td>            <td><a target="_blank" href="<%=path%>/modeler/service/editor?id=${t.id}">编辑</a></td>            <td><a target="_self" href="<%=path%>/a/deployModel.do?id=${t.id}">部署</a></td>            <td><a target="_self" href="<%=path%>/a/deleteModeler.do?id=${t.id}">删除</a></td>        </tr>    </c:forEach></table><br>已经部署列表: 启动任务: <a href="<%=path%>/a/start1.do">Start1</a>  <a href="<%=path%>/a/start2.do">Start2</a><table border="0">    <tr>        <th>定义ID</th>        <th>部署ID</th>        <th>Key</th>        <th>Name</th>        <th>启动</th>        <th>删除</th>    </tr>    <c:forEach items="${processDefinitionList}" var="d">        <tr>            <td>${d.id}</td>            <td>${d.deploymentId}</td>            <td>${d.key}</td>            <td>${d.name}</td>            <td><a href="<%=path%>/a/start.do?id=${d.id}">启动</a></td>            <td><a href="<%=path%>/a/deleteDeploy.do?id=${d.deploymentId}">删除</a></td>        </tr>    </c:forEach></table><br>任务列表:<table border="0">    <tr>        <th>ID</th>        <th>Name</th>        <th>完成</th>    </tr>    <c:forEach items="${tasks}" var="t">        <tr>            <td>${t.id}</td>            <td>${t.name}</td>            <td><a href="<%=path%>/a/complete.do?id=${t.id}">批准</a></td>        </tr>    </c:forEach></table></body></html>




<?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:context="http://www.springframework.org/schema/context"       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">    <context:component-scan base-package="com">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan>    <bean id="dataSource" value="com.mysql.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://192.168.0.196:3306/activiti_demo"/>        <property name="username" value="root"/>        <property name="password" value=""/>    </bean>    <!--<bean id="dataSource" value="com.mysql.jdbc.Driver" />        <property name="jdbcUrl" value="jdbc:mysql://192.168.0.196:3306/activiti_demo" />        <property name="username" value="root" />        <property name="password" value="" />    </bean>-->    <bean id="transactionManager" ref="dataSource"/>    </bean>    <bean id="processEngineConfiguration" ref="dataSource"/>        <property name="deploymentResources" value="classpath*:/bpmn/*.bpmn"/>        <property name="transactionManager" ref="transactionManager"/>        <property name="databaseSchemaUpdate" value="true"/>        <property name="jobExecutorActivate" value="false"/>        <property name="processDefinitionCacheLimit" value="10"/>        <property name="activityFontName" value="${diagram.activityFontName}"/>        <property name="labelFontName" value="${diagram.labelFontName}"/>    </bean>    <bean id="processEngine" ref="processEngineConfiguration"/>    </bean>    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>    <bean id="formService" factory-bean="processEngine" factory-method="getFormService"/>    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>    <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService"/>    <!-- Activiti end --></beans>




<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.pandy</groupId>    <artifactId>activiti_demo</artifactId>    <packaging>war</packaging>    <version>1.0-SNAPSHOT</version>    <name>activiti_demo</name>    <url>http://maven.apache.org</url>    <properties>        <spring.version>3.1.2.RELEASE</spring.version>        <activiti.version>5.13</activiti.version>        <spring-data-jpa.version>1.3.4.RELEASE</spring-data-jpa.version>        <commons-dbcp.version>1.4</commons-dbcp.version>        <commons-io.version>2.4</commons-io.version>    </properties>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>3.8.1</version>            <scope>test</scope>        </dependency>        <!--<dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-core</artifactId>            <version>2.2.3</version>        </dependency>-->        <dependency>            <groupId>com.google.code.gson</groupId>            <artifactId>gson</artifactId>            <version>2.2.4</version>        </dependency>        <!-- Activiti -->        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-engine</artifactId>            <version>${activiti.version}</version>        </dependency>        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-spring</artifactId>            <version>${activiti.version}</version>        </dependency>        <!-- Spring -->        <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-tx</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-jpa</artifactId>            <version>${spring-data-jpa.version}</version>            <exclusions>                <exclusion>                    <groupId>junit</groupId>                    <artifactId>junit-dep</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>${spring.version}</version>        </dependency>        <!-- WEB begin -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>${commons-io.version}</version>        </dependency>        <dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.2.2</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>taglibs</groupId>            <artifactId>standard</artifactId>            <version>1.1.2</version>        </dependency>        <!-- JDBC -->        <!-- mysql -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.26</version>        </dependency>        <!-- dbcp connection pool -->        <dependency>            <groupId>commons-dbcp</groupId>            <artifactId>commons-dbcp</artifactId>            <version>${commons-dbcp.version}</version>        </dependency>        <!-- bonecp -->        <dependency>            <groupId>com.jolbox</groupId>            <artifactId>bonecp</artifactId>            <version>0.8.0-rc1</version>        </dependency>        <!-- Modeler -->        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-modeler</artifactId>            <version>${activiti.version}</version>        </dependency>        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-explorer</artifactId>            <version>${activiti.version}</version>            <exclusions>                <exclusion>                    <groupId>com.vaadin</groupId>                    <artifactId>vaadin</artifactId>                </exclusion>                <exclusion>                    <groupId>org.vaadin.addons</groupId>                    <artifactId>dcharts-widget</artifactId>                </exclusion>                <exclusion>                    <artifactId>activiti-simple-workflow</artifactId>                    <groupId>org.activiti</groupId>                </exclusion>            </exclusions>        </dependency>        <!-- 查看流程详细定义 -->        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-diagram-rest</artifactId>            <version>${activiti.version}</version>        </dependency>    </dependencies>    <repositories>        <repository>            <id>Alfresco Maven Repository</id>            <url>https://maven.alfresco.com/nexus/content/groups/public/</url>        </repository>        <repository>            <id>buzzmedia</id>            <url>http://maven.thebuzzmedia.com</url> <!-- ImageScalr -->        </repository>        <repository>            <id>activiti</id>            <name>Activiti</name>            <url>https://maven.alfresco.com/nexus/content/repositories/activiti/</url>        </repository>        <repository>            <id>Alfresco thirdparty</id>            <url>https://maven.alfresco.com/nexus/content/repositories/thirdparty/</url>        </repository>        <repository>            <id>activiti-third-party</id>            <name>Activiti third party</name>            <url>https://maven.alfresco.com/nexus/content/repositories/activiti-thirdparty/</url>        </repository>        <repository>            <id>maven-restlet</id>            <name>Public online Restlet repository</name>            <url>http://maven.restlet.org</url>        </repository>    </repositories>    <build>        <finalName>activiti_demo</finalName>        <plugins>            <plugin>                <groupId>org.mortbay.jetty</groupId>                <artifactId>jetty-maven-plugin</artifactId>                <version>8.1.3.v20120416</version>                <configuration>                    <webApp>                        <contextPath>/activiti_demo</contextPath>                    </webApp>                </configuration>            </plugin>        </plugins>    </build></project>

热点排行