Activiti学习——整合ActivitiModeler到项目中

学习来源

自己学习Activiti,主要是通过拆解和重新组装咖啡兔的项目而学习的。

咖啡兔博客:http://www.kafeitu.me/

项目地址:https://github.com/henryyan/kft-activiti-demo

基础准备

上面的GitHub中有maven版本和no-maven版本,我下的是no-maven版本

kft-activiti-demo-no-maven下载

解压并部署项目

项目结构,报错地方是xml或者js文件,可以忽略

项目

本文就是为了将对应功能拆分出来:流程管理->模型工作区->创建功能

功能实现

实现思路

  1. 将咖啡兔项目中我们能用到的类拷贝过来
  2. 参考咖啡兔项目,修改对应配置文件
  3. 将Activiti5.16.4项目中activiti-explorer.war中相关文件拷贝到自己项目的指定位置中
  4. jar包就使用官方示例中的jar包
  5. 为什么不全部使用咖啡兔项目的文件, 是因为我完全使用咖啡兔项目的文件弄不出来。没办法,只好使用官方示例对照参考。

拷贝咖啡兔项目相关文件

参考咖啡兔项目,发现其模型【新建】接口调用的是下图中ModelController的create方法

拷贝到自己项目中的controller中,分析其代码

使用到HttpServletResponse,则项目需要引入tomcat的lib中的servlet-api.jar

使用到/service/editor接口,根据日志发现该接口不在spring管理中,则就有可能是在web.xml中配置的servlet

查看咖啡兔项目的web.xml果然在里面,在自己项目的web.xml中添加下面的代码

局部代码


    <!-- Restlet adapter, used to expose modeler functionality through REST -->

    <servlet>

        <servlet-name>ExplorerRestletServlet</servlet-name>

        <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>

        <init-param>

            <!-- Application class name -->

            <param-name>org.restlet.application</param-name>

            <param-value>org.activiti.explorer.rest.ExplorerRestApplication</param-value>

        </init-param>

    </servlet>

    <servlet-mapping>

        <servlet-name>ExplorerRestletServlet</servlet-name>

        <url-pattern>/service/*</url-pattern>

    </servlet-mapping>

使用到org.activiti.explorer.rest.ExplorerRestApplicatio这个类,开始以为是jar包中的文件,找半天没找到,后来看到居然是项目自己的包路径(⊙﹏⊙)b,果断拷贝到自己的项目中

至此,咖啡兔项目中的能用的代码就拷贝完了

create方法


    @RequestMapping(value = "/create",method = RequestMethod.POST)  

    public void getEditor(

            @RequestParam("description") String description,

            @RequestParam("name") String name,

            @RequestParam("key") String key,

            HttpServletRequest request, HttpServletResponse response){  

        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, name);

            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);

            description = StringUtils.defaultString(description);

            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);

            modelData.setMetaInfo(modelObjectNode.toString());

            modelData.setName(name);

            modelData.setKey(StringUtils.defaultString(key));

            repositoryService.saveModel(modelData);

            repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));

            System.out.println("跳转页面");

            response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());

        } catch (Exception e) {

           System.out.println("创建模型失败");

        }

    }

拷贝官方示例相关文件

在下载下来的Activiti5.16.4中找到activiti-explorer.war,解压得到部署文件夹

将下图指定文件夹拷贝到WebRoot中

将WEB-INF->classes中下图文件拷贝到自己项目的src中

为什么是上列这些文件,只能说是一点一点对照咖啡兔项目摸索出来的,(⊙﹏⊙)b人笨了就靠这样来弄了

编写自己的新增页面

就是要调用controller的页面,需要传递三个参数,怎么实现都可以,

我用的是bootstrap-3.3.5框架

用form表单提交的

示例结果

页面

新增

保存成功并跳转到ActivitiModeler

在数据库表act_re_model中可以查看刚刚添加的数据

示例下载

点击下载示例

出现问题

ClassNotFound

jar包没拷贝完,直接将官方示例中的jar包全部拷贝过来,实在不行,直接下载本示例,直接在上面改试试

后续

后续就可以进行咖啡兔项目的分解学习了

时间: 2024-07-30 11:54:22

Activiti学习——整合ActivitiModeler到项目中的相关文章

Cocos2dx 学习笔记整理----在项目中使用图片(二)

之前了解了一种比较简单的图片的使用方式, 今次来了解稍微复杂一点的图片使用方式,plist+png. 这里要用到之前提到的Texture Packer. Texture Packer是一款图片打包工具,Texture Packer可以将素材打包成我们项目需要的格式. Cocos2dx支持很多种格式, 我们可以将某一种类的或者有共性的图片打包到一个png,然后用plist管理,以节约加载和内存,且显卡支持的纹理尺寸的长宽为2的n次幂,Texture Packer会把纹理整合到次尺寸. 今次我们利用

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Cocos2dx 学习笔记整理----在项目中使用图片(初)

cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资源皆是以Resources文件夹为根目录参考的. 然后进入到HelloWorldScene.cpp的init方法的最后面加入以下代码: ? 1 2 3 CCSprite * sprite = CCSprite::create("bl_24.png"); sprite->setPosi

关于项目中遇到的细节化的原则

"时间都去哪儿了",每当我听到这首歌的时候,都会感慨,时间飞梭,恍如流逝,真的过的很快!一眨眼,来北京快1年了,目前从事着我喜欢的热爱的编程工作,虽然比不上JAVA,C等强类型语言,但PHP改变了我的生活,改变了我原先的运行轨迹!朝着目标一步一步前进! 新手,菜鸟目前来形容我再合适不过了,我承认我的确是一名名副其实的小白,作为一名菜鸟级的程序员,路还很遥远,但是学习到的东西不可谓不多,尤其是团队合作中遇到的问题因为一个人的错误会浪费很多时间和精力! 就在上个星期,我所在的单位因客户比较

BOS项目 第10天(activiti工作流第二天,流程变量、组任务、排他网关、spring整合activiti、项目中实现流程定义管理)

BOS项目笔记 第10天 今天内容安排: 1.流程变量(设置.获取) 2.组任务(候选人.候选组) 3.排他网关使用 4.spring整合activiti 5.将activiti应用到bos项目中 6.在bos项目中实现流程定义管理(部署.查询.查看png.删除) 1. 流程变量 1.1 设置流程变量的方式 l 方式一:启动流程实例时设置 l 方式二:办理任务时设置 l 方式三:使用RuntimeService的set方法设置 l 方式四:使用TaskService的set方法设置 注意:如果设

activiti自己定义流程之Spring整合activiti-modeler实例(一):环境搭建

项目中须要整合activiti-modeler自己定义流程,找了非常多资料后,最终成功的跳转到activiti-modeler流程设计界面.下面是记录: 一.整合基础:eclipse4.4.1.tomcat7.jdk1.7.mysql5.6.25.maven3.2.5.activiti5.16.3.spring4.0.9 二.步骤: 1.下载activiti-5.16.3.zip: http://www.activiti.org/download.html 2.解压zip文件,解压后的文件夹打开

读程--从未参与的项目中学习

这是软件工程综合实践课程布置的第一次个人博客任务,我需要完成的是找一个未参与的项目,读程后写出自己的感受. 首先,特别感谢我可爱的同学及好朋友分享给我她的项目,让我能够从她的程序和代码风格中学习到一些我不具备的知识和能力. 这个项目是我们大一下完成的一个项目,网上购物系统,是一个用于网上购书的一个程序,实现了购书所需的大部分功能,是我们大一下需要完成的大作业,使用的是语言是C++,她在该项目中分了三个头文件和一个源文件,将购书系统分成了订单管理,书籍管理和用户管理三部分进行实现. 我想起自己在大

Activiti学习之spring boot 与activiti整合

声明:本文是springboot2.0的多项目构建,springboot2.0和spingboot1.5的配置是有出入的,构建项目之前请规范您的springboot版本,选择2.0以上. 一.在IDEA中使用工具创建SpringBoot + Gradle的父工程 new -> project ->gradle 二.在父工程下新建叁个模块 dao service web 右键单击父工程 new -> module -> Spring Initializr -> type选项选中

webpack前端构建工具学习总结(四)之自动化生成项目中的html页面

接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 1.安装html-webpack-plugin插件,输入命令:npm install html-webpack-plugin --save-dev 2.在webpack.config.js文件中,引入html-webpack-plugin插件 3.输入命令:npm run webpack,编译打包 可以看到在dist/js目录下新生成了一个index.html文件,并且引入了新编译生成的两个js,但此