Vue集成activity工作流

Vue集成activity工作流情景:由于activiti与系统应用主题样式出入较大,协商后决定将activiti的editor-app放在前台。ps:内网开发,无图,凭记忆摘取主要内容。步骤:将activiti放在public即静态目录下。 通过iframe在相应的前台工作流界面引入activiti的model.html(最外层的主html,名字可能有出入)。 mounted时将this,即vuecompo…

大家好,又见面了,我是你们的朋友全栈君。

情景:

由于activiti与系统应用主题样式出入较大,协商后决定将activiti的editor-app放在前台。

ps:主要iframe解决多项目集成,重写httpRequest添加token,但都2020年了,其实优选微前端方案集成。

步骤:

  1. 将activiti放在public即静态目录下。
  2. 通过iframe在相应的前台工作流界面引入activiti的model.html(最外层的主html,名字可能有出入)。
  3. mounted时将this,即vuecompoennt对象赋值给iframe,这样可以在保存后进行页面切换,或者某个接口回调后控制vue界面的状态。
    mounted(){
        window.getMyVue = this;//全局存入当前vue实例,供activiti调用
    }
  4. 因为涉及到了权限问题,而通过iframe引入的页面本身不会跟我们系统的请求头一致,需要在页面主html文件加上下面一段代码。
    //model.html
    <script>
       (
        function(open){
        XMLHttpRequest.prototype.open = function(method,url,async,user,pass){
            open.call(this,method,url,async,user,pass);//this指XMLHttpRequest
            this.setRequestHeader("token",window.parent.getMyVue.token);//mounted时传入的token
        }
    	}
    	)(XMLHttpRequest.prototype.open)
    </script>

     

  5. 配置下url的config文件,通过network调试查看那个接口有问题,在activiti文件目录全局搜对应问题。
  6. 至此,已完成接入。

下面是自己做activiti集成时的代码,供参考:

//vue中引入activi代码

<template>
    <div class="full-screen">
        <div class="main-section flex-column">
            <iframe ref="activit" width="100%" height="100%" :src="src" style="border:none"></iframe>
        </div>
    </div>
</template>
<script>
  import Api from '@/config';//服务器地址配置
  import Vue from 'vue';
  import {getToken} from '@/utils/auth';//登陆人的token
  export default{
    computed:{
        src(){
         return Api.preUrl + "/modeler.html?modelId=" + this.$store.modelId;//activiti主html路径 
        },
        apiUrl(){
        retirm Api.apiUrl + "/api-hclp-activiti-server";//后台部署的api服务
        },
        token(){
        return getToken();//token
    }
   },
    methods:{
    goto(){
    this.$message.success("保存模型成功");
    this.$router.push({name:"/sys/activiti"})    
}    
},
    mounted(){
    window.getMyVue = this;//全局存入当前vue实例,供activiti调用    
}
}
</script>

//修改activiti中app-cfg改变调用地址

var ACTIVITI = ACTIVITI || {};
ACTIVITI.CONFIG = {
    contextRoot:(function(){
    return window.parent.getMyVue.apiUrl;//上一步将vue实例传入的父窗口
    })()
}

 

toolbar-default-actions.js  文件是工具栏的控制函数,可在此文件内部调用vue的生命周期来完成业务中例如保存成功后的业务逻辑(如跳转页面)

 

效果图:

效果图

开发途中遇到的问题:

1.请求与vue不共享,不带请求头,需要手动在文件里扩展XMLHttpRequest。

2.X/JSON报错,不影响开发。

3.有个{model}/json的接口获取编辑器配置内容,起初因后台缺少某个json格式的文件,导致无法展示界面。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132434.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android的四大组件_android sdk是什么

    android的四大组件_android sdk是什么android四大组件分别为activity、service、contentprovider、broadcastreceiver。一、android四大组件详解1、activity(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)android应用中每一个Activity都必须要在AndroidManif

    2022年10月22日
    0
  • navicat 15永久激活工具破解方法

    navicat 15永久激活工具破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    116
  • 两位数乘法的速算方法(二)

    两位数乘法的速算方法(二)两位数乘法的速算方法(二)一、被乘数首尾相同1. 乘数首尾互补公式推导:(10a+a)(10b+10-b)=100ab+10(ax(10-b)+ab)+a(10-b)=100ab+100a+ab=100a(b+1)+ab 速算方法:1.乘数首位加1,得出的和与被乘数首位相乘,得数作为前积;2.尾数相乘,得数作为后积,没有十位用0补; 应用举例:66×3

    2022年5月2日
    73
  • Ubuntu(VMWare)与Windows共享文件的简单方法

    Ubuntu(VMWare)与Windows共享文件的简单方法

    2021年7月30日
    64
  • 数据结构中 ElemType

    数据结构中 ElemType前段时间,我带了大一的上机课,有好多同学问我,数据结构的struct中,ElemType是什么意思。我当时就操了,尼玛这不就是数据类型嘛!智商啊。后来我就慢慢想了,为什么用ElemType然后#defineElemTypeint来定义奥原来是为了好扩展,如果代码出现变化,我们可以修改最少的代码部分,是他符合你的要求。

    2022年5月12日
    48
  • tcpdump抓包命令_tcpdump指定ip抓包命令

    tcpdump抓包命令_tcpdump指定ip抓包命令tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到。它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整。参数介绍tcpdump命令的参数很多,详见如下这里只介绍一些常用的参数​-ccount//count表示数量。抓取数据包的数量达到count后结束命令,如果不使用…

    2022年8月21日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号