专栏首页hotqin888的专栏腾讯云部署golang flow流程,vue.js+nginx+mysql+node.js

腾讯云部署golang flow流程,vue.js+nginx+mysql+node.js

这次总算把js-ojus/flow的ui部署到腾讯云上,比较吐槽的就是,为啥这么复杂,vue.js前后端分离,比golang编写的部署方面复杂几万倍。真是浪费人生啊。

golang+sqlite写的东西,直接传到任意文件里,运行即可。——当然,适用于小型的东西。

vue.js,要安装node.js环境,要nginx环境,要配置nginx跨域;要安装mysql数据库,要配置用户。体验地址:

http://111.230.181.182:8080

github.com/3xxx 

只有这个nginx的配置文件值得贴出来,其他都忒复杂了。

[root@VM_16_4_centos nginx]# vim nginx.conf
    server {
        listen       8080 default_server;
        listen       [::]:8080 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }
        location ^~/api {
         proxy_pass https://bjys.itdos.com/v1/admin;——以分号结束
        }
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}——结尾括号

对应的vue.js_config_index.js

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
        "/api": {
            target: "https://bjys.itdos.com/v1/admin", //https://bjys.itdos.com/v1/admin---218.78.187.216/api/v1设置调用的接口域名和端口
            changeOrigin: true,
            pathRewrite: {
                "^/api": "" //用'/api' 代替 'http://218.78.187.216/api/v1'
            }
        } 
    },

只有这样,vue.js才能axios请求api:https://bjys.itdos.com/v1/admin之类的,比如vue某个页面:

            axios({
                // headers: {
                //   'X-Requested-With': 'XMLHttpRequest',
                //   'Content-Type': 'application/json; charset=UTF-8',
                //   'Access-Control-Allow-Origin': '*'
                // },//设置跨域请求头
                method: "POST",//请求方式
                url: "/api/flowtype",//请求地址
                params:{
                  name:this.ruleForm2.typename,
                },

 当然,后端的flow作为一种通用流程包,是golang目前唯一的吧,对于第一次做流程的开发人员来讲还是蛮拗口的。

默认页的文档我还没写完呢~

  • 设计说明 什么是文档流程? 一个文档流程的本质就是改变文档状态state);对应的,我们再设计一个改变状态的动作action;如果再给文档分类doctype,比如合同流程,采购流程的文档;再配合用户-角色-权限(accesscontex);当一个文档处于一个state的时候,谁有权限permission操作action它?就要预设置好当前状态state下transition:从state1通过动作action1改为state2;那么一个文档如何按照指定的流程来往下走呢,就要先定义一系列节点node,再将这些节点组合到workflow下,见下面的数据结构和说明:
          Document Type : docType1 //1.定义文档类型-流程类型
          Document States : [
              docState1, docState2, docState3, docState4 // 2.定义4个状态
          ]
          Document Actions : [
            docAction12, docAction23, docAction34 // 3.定义修改状态的动作,实际应用中,除了向前传递,还要定义向后回退的动作。for the above document states
            docAction21, docAction31, docAction41  //每个都直接回退到1
          ]
          Document Type State Transitions : [
            docState1 --docAction12--> docState2, //前进流程
            docState2 --docAction21--> docState1, //回退流程
            docState2 --docAction23--> docState3,
            docState3 --docAction31--> docState1,
            docState3 --docAction34--> docState4,
            docState4 --docAction41--> docState1,
          ]

          Access Contexts : [
            accCtx1, accCtx2 // 主要是为了用户-角色-权限用的
          ]
          
          Workflow : {
            Name : wFlow1,  //一个doctype只能对应一个workflow
            Initial State : docState1  //一个流程的初始状态
          }
          Nodes : [
            node1: {
              Document Type : docType1,
              Workflow : wFlow1,
              Node Type : NodeTypeBegin, // 开始节点 note this
              From State : docState1,
              Access Context : accCtx1,
            },
            node2: {
              Document Type : docType1,
              Workflow : wFlow1,
              Node Type : NodeTypeLinear, // 中间节点可以是线性的,也可以是平行的 note this
              From State : docState2,
              Access Context : accCtx2, // a different context
            },
            node3: {
              Document Type : docType1,
              Workflow : wFlow1,
              Node Type : NodeTypeEnd, // note this
              From State : docState3,
              Access Context : accCtx1,
            },
          ]
        

以上都是系统管理员设置的部分,当一个用户使用这个系统的时候,他在某个板块(doctype分类)新建(上传)一个文档document,系统自动根据这个分类,设置了文档的初始state,在这个state下,一般只有一个动作可选,就是传递给下一个状态的操作,还要选接受的人或组(也可以系统固定),还可以写上注释、说明,最后点击按钮提交apply;系统要做的,记录下来谁在什么时间操作了,把信息message发送给对应的用户的信箱mailbox,当对应的用户登录系统的时候,可以查看message。 当用户点击信箱里某个信息,转到对应的文档详情detail上,能看到这个文档以往(历史)操作记录时间线,可以对这个文档进行操作:选择动作action,选择接受的组,提交apply。

  • 设置部分 1.1 设置doctype docstate和docaction 1.1.1 文档类型doctype,只是给定一个名字而已,每个doctype对应一个workflow流程,如果文档某些需要签署到总经理,有些则只要签署到部门经理,咋办? 1.1.2 文档状态,即每一级给定一个状态,也只是定一个名字而已; 1.1.3 用户动作,从一个状态到另一个状态对应的动作,只是一个名字而已; 1.2 设置transition node 和workflow 1.2.1 transition转变,就是定义一个状态到另一个状态以及动作; 1.2.2 workflow流程,一种文档类型完整流程,将节点纳入到这个流程中,就完成了一个文档流程的设置; 1.2.3 node节点,给流程定义完整流程中各个节点,包括节点类型:比如是单线过来的还是这个节点有多线过来,有开始节点,和结束节点……; 1.3 设置accesscontex 1.3.1 accesscontex访问环境,就是给某个流程定义一下用户-角色-权限; 1.3.2 user用户,每个用户会自动生成一个单用户组,因为flow都是针对group的; 1.3.3 group用户组; 1.3.3 user_group将用户加入组; 1.3.3 role定义角色; 1.3.3 permission定义角色权限,即action; 1.3.3 group_role将group加入角色;
  • 用户部分 1.1 新建文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 闭锁——CountDownLatch

      闭锁是一个同步工具类,主要用于等待其他线程活动结束后,再执行后续的操作。例如:在王者荣耀游戏中,需要10名玩家都准备就绪后,游戏才能开始。

    小忽悠
  • 编写灵活、稳定、高质量的HTML代码的规范

    (1)用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。

    WEBING
  • 使用Spring的@Async创建异步方法

    在开发系统的过程中,通常会考虑到系统的性能问题,提升系统性能的一个重要思想就是“串行”改“并行”。说起“并行”自然离不开“异步”,今天我们就来聊聊如何使用Spr...

    小忽悠
  • ExtJs一(Hello World)

      本文原文链接地址 http://aehyok.com/Blog/Detail/48.html

    aehyok
  • Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试

    摘要: 1.6.0新增fundebug.test()方法用于测试,请大家及时更新。

    Fundebug
  • Vue.js入门教程-过滤器

    (1)过滤器(Filters)提供了一种 执行文本转换的方法,比如说都转换成大写字母或者几乎做任何我们想做的事情。

    WEBING
  • Spring AOP(三) Advisor类架构

    Spring AOP是Spring的两大基石之一,不了解其基础概念的同学可以查看这两篇文章AOP基本概念和修饰者模式和JDK Proxy。

    remcarpediem
  • JavaScript-数据类型

    true 和 1 比较是相同,false 和 0 比较是相同(是 “==” 比较),因为内部会实现数据类型转化,将 true 转换成 1,将 false 转换成...

    WEBING
  • 前端面试题-url、href、src

    比如网址 http://segmentfault.com/html/...,必须遵守以下的语法规则:

    WEBING
  • JavaScript-数据类型转换

    涉及加法运算符(+)的数字和字符串表达式中,JavaScript 会把数字值转换为字符串。例如

    WEBING

扫码关注云+社区

领取腾讯云代金券