activiti使用modeler进行流程创建,编辑、部署以及删除实例(可运行)

最近在学习activiti,网上搜索的实例,都搜索不到完整的,所以打算自己结合完整的实例,亲自操作一遍,现将自己的代码粘贴出来,希望帮助到可以帮助的人,现粘贴一张modeler的编辑器,长这个样的。
在这里插入图片描述
1、现在来说一下流程,先建立spring boot项目,导入对应的jar包。

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-diagram-rest</artifactId>
            <!-- exclusions:activiti-diagram-rest中含有security的jar包,导致访问springbott需要登录,此处剔除登录-->
            <exclusions>
                <exclusion>
                    <artifactId>spring-security-config</artifactId>
                    <groupId>org.springframework.security</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-security-core</artifactId>
                    <groupId>org.springframework.security</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-security-crypto</artifactId>
                    <groupId>org.springframework.security</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-security-web</artifactId>
                    <groupId>org.springframework.security</groupId>
                </exclusion>
            </exclusions>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-common-rest</artifactId>
            <version>5.19.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-modeler</artifactId>
            <exclusions>
            <exclusion>
                <artifactId>spring-security-config</artifactId>
                <groupId>org.springframework.security</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-security-core</artifactId>
                <groupId>org.springframework.security</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-security-crypto</artifactId>
                <groupId>org.springframework.security</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-security-web</artifactId>
                <groupId>org.springframework.security</groupId>
            </exclusion>
            </exclusions>
            <version>5.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/batik/batik-script -->

    </dependencies>

2、从官方发布的activiti-explorer.war包中获取这几个静态资源文件,并复制到对应的目录,如下:

在这里插入图片描述
再复制几个封装好的后台逻辑(保存流程模板等操作);
在这里插入图片描述
2、复制好后,在三个后台文件中分别加入@RequestMapping("/service")路径限制,以免与jar的controller路径冲突:
在这里插入图片描述
修改resources\static\editor-app\app-cfg.js文件,指定为刚刚我们复制的三个文件的访问路径
在这里插入图片描述
其中,stencilset.json文件为我门编辑器的界面控件配置,这个可以自己修改设定。可以增加减少自己实际业务中需要的控件及属性.
3.此时设置我们的数据库链接配置:

server.port=8888
spring.datasource.url=jdbc:mysql://localhost:3306/activitiDemo?characterEncoding=UTF-8&nullCatalogMeansCurrent=true&serverTimezone=GMT&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

##每次应用启动不检查Activiti数据表是否存在及版本号是否匹配 第一次设置为true 会自动创建表结构,之后即可设置为false 提高运行速度
spring.activiti.database-schema-update=true

4、创建maincontroller,开启我们的访问界面入口:

   @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private ObjectMapper objectMapper;

    @Autowired
    private FormService formService;

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private TaskService taskService;

    @Autowired
    private HistoryService historyService;

    @Autowired
    private ProcessEngineConfiguration processEngineConfiguration;
 /**
     * 创建模型
     * @param request
     * @param response
     * @return
     */
    @RequestMapping("/createModel")
    public String createModel(HttpServletRequest request, HttpServletResponse response) {

        String name = "请假流程";
        String description = "这是一个请假流程";

        String id = null;
        try {
            Model model = repositoryService.newModel();
            String key = name;
            //版本号
            String revision = "1";
            ObjectNode modelNode = objectMapper.createObjectNode();
            modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
            modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
            modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);

            model.setName(name);
            model.setKey(key);
            //模型分类 结合自己的业务逻辑
            //model.setCategory(category);

            model.setMetaInfo(modelNode.toString());

            repositoryService.saveModel(model);
            id = model.getId();

            //完善ModelEditorSource
            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);
            repositoryService.addModelEditorSource(id, editorNode.toString().getBytes("utf-8"));
            String aa = request.getContextPath();
            response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + id);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "index";
    }

最后启动项目:访问http://localhost:8888/createModel,即可进入到文章开头的编辑器主页

5、创建之后肯定要保存,这就用到了框架自带的保存ModelSaveRestResource类,这里需要注意的是,在实际保存的时候,很可能会报错500,或者403之类的,说明是参数不匹配,这就是我自己踩的一个坑,需要自己修改,把参数展开来入下,如本身没问题,可忽略这一步:

 public void saveModel(@PathVariable String modelId, String name, String description, String json_xml,
                        String svg_xml) { }

6.基本的流程能跑起来之后,上面所说的已经包含了运用modeler创建与保存实例,接下来,还有部署,删除,开启,流程跟踪等步骤,因网上很多都是单元测试实例,对初学者很不友好,所以自己整合了一些简单的界面来演示这些流程,因代码太杂,就直接说明使用流程,并粘贴代码:

在这里插入图片描述审批界面,会又看到当前流程的审批流程节点,并进行高亮显示
在这里插入图片描述
具体得自己操作看看,代码会粘贴出来,可自己访问操作http://localhost:8888/index。activiti的数据库,如没有表,会自动创建表,表的说明可自行百度,这部分文章倒是挺多的。
因自己是在网上看到很多例子之后整合的,可能会东拼西凑一些,再结合自己的,所以跟一些博主会有点雷同,自己已经找不到雷同的点,所以无法表明 ,希望可以谅解,现阶段自己还想着会签,驳回等功能的研究,希望有 好文章,好想法的同学可以评论留下链接,大家一起学习。
代码地址:https://github.com/w123p/activiti.git

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
activiti modeler是一个用于创建编辑工作流模型的图形化工具。通过引用\[1\]中的Maven依赖,可以将activiti-modeler集成到项目中。在activiti modeler中,你可以创建和设计工作流程,包括定义流程节点、连接节点、设置流程变量等。在审批界面中,你可以看到当前流程的审批流程节点,并进行高亮显示,具体操作可以参考引用\[2\]中提供的链接。activiti modeler会自动创建activiti的数据库表,如果没有表的话。关于activiti modeler的更多信息和使用方法,你可以参考引用\[3\]中提供的代码地址和控制类。希望这些信息对你有帮助。 #### 引用[.reference_title] - *1* *3* [Activiti集成Activiti Modeler](https://blog.csdn.net/a1135004584/article/details/109514522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [activiti使用modeler进行流程创建编辑部署以及删除实例(可运行)](https://blog.csdn.net/qq_40065816/article/details/107401279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值