diff --git a/docs/document/countersign.md b/docs/document/countersign.md new file mode 100644 index 0000000..8217a29 --- /dev/null +++ b/docs/document/countersign.md @@ -0,0 +1,5 @@ +# 会签 + +当在一个阶段出现多个处理人的时候,同时也需要多个处理人都处理完成,才可以进入下一个阶段的时候,则需要选择上会签的功能。 + +也就说,如果选择了会签,则需要当前阶段的所有人处理完成,才能进入下一个阶段。 diff --git a/docs/document/cross_compile.md b/docs/document/cross_compile.md new file mode 100644 index 0000000..bd17633 --- /dev/null +++ b/docs/document/cross_compile.md @@ -0,0 +1,29 @@ +# Mac、Linux、Windows下分别进行交叉编译 + +Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。 + +Mac 下编译 Linux 和 Windows 64位可执行程序 + + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go + +Linux 下编译 Mac 和 Windows 64位可执行程序 + + CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go + +Windows 下编译 Mac 和 Linux 64位可执行程序 + + SET CGO_ENABLED=0 + SET GOOS=darwin + SET GOARCH=amd64 + go build main.go + ------------------------------------------------- + SET CGO_ENABLED=0 + SET GOOS=linux + SET GOARCH=amd64 + go build main.go + +GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)。 +GOARCH:目标平台的体系架构(386、amd64、arm)。 +CGO_ENABLED:交叉编译不支持 CGO 所以要禁用它。 diff --git a/docs/document/end_process.md b/docs/document/end_process.md new file mode 100644 index 0000000..c855bcd --- /dev/null +++ b/docs/document/end_process.md @@ -0,0 +1,5 @@ +# 结单 + +当发现提交的工单有误,可以根据实际情况,直接结束工单。 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-12.png) diff --git a/docs/document/exclusive_gateway.md b/docs/document/exclusive_gateway.md new file mode 100644 index 0000000..e465418 --- /dev/null +++ b/docs/document/exclusive_gateway.md @@ -0,0 +1,17 @@ +# 排他网关 + +在平时的业务中,有的时候需要根据表单数据的值来判断跳转到啥位置。 + +例如:如果申请的服务器价格低于1000元就是部门领导审批,如果超过1000元,那么就是CTO审批。为兼容这种情况因此加入了排他网关的概念。 + +此外还需注意,如果使用了排他网关,则必须有一个条件判断是正确的,否则流程将无法进行下去,报错失败。 + +将下面的Json格式数据,修改为自己的表单数据,写入到对应的流转线条中即可,但是流转线条的源阶段必须要排他网关的图标。 + + [ + { + "key":"字段名称", + "sign":"==", + "value":"需要判断的值" + } + ] diff --git a/docs/document/forward.md b/docs/document/forward.md new file mode 100644 index 0000000..1fcbc35 --- /dev/null +++ b/docs/document/forward.md @@ -0,0 +1,5 @@ +# 转交 + +进行工单转交,只能在当前阶段将工单转交给他人。 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-11.png) diff --git a/docs/document/ide_development.md b/docs/document/ide_development.md new file mode 100644 index 0000000..c92a7cc --- /dev/null +++ b/docs/document/ide_development.md @@ -0,0 +1,59 @@ +# IDE开发 + +众多 IDE 里边,推荐使用 `goland IDE`进行调试 + +首先我们启动 `Goland` , 点击 `Open Project`,下图红框圈选部分; + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image.png) + +选择 ferry 存放的路径,找到并打开; + +# 配置 GOPORXY + +然后选择`Goland` > `Preferences` ; + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-1.png) + +# 添加运行或调试配置 + +### 添加 init 配置 + +1\. 打开`Edit Configurations` + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-2.png) + +2\. 选择 `+` > `go build` + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-3.png) + +3\. 按照下图所示进行配置,注意:填写 `Program arguments` 为 `init -c=config/settings.dev.yml`,完成之后点击保存 + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-4.png) + +4\. 修改数据库 + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-5.png) + +5\. 初使化 + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-6.png) + +### 添加 server 配置 + +1\. 打开`Edit Configurations` + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-7.png) + +2\. 选择 `+` > `go build` + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-8.png) + +3\. 按照下图所示进行配置,注意:填写 `Program arguments` 为`server -c=config/settings.dev.yml`,完成之后点击保存 + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-9.png) + +4\. 启动 debug + +![](https://www.fdevops.com/wp-content/uploads/2020/08/image-10.png) + +转载自:[http://doc.zhangwj.com/go-admin-site/guide/ide.html#%E6%B7%BB%E5%8A%A0-server-%E9%85%8D%E7%BD%AE](http://doc.zhangwj.com/go-admin-site/guide/ide.html#%E6%B7%BB%E5%8A%A0-server-%E9%85%8D%E7%BD%AE) diff --git a/docs/document/install.md b/docs/document/install.md new file mode 100644 index 0000000..7313946 --- /dev/null +++ b/docs/document/install.md @@ -0,0 +1,226 @@ +# 安装 + +> 需注意因使用到了json类型的字段,因此MySQL需是5.7以上的版本。 +> +> MySQL > 5.7 +> +> Go >= 1.14 +> +> Redis + +若是安装出错,请先确认redis及MySQL是否安装配置成功,若是还有问题,可在群内提问。 + +## 配置文件介绍 + + script: + path: ./static/scripts # 任务脚本路径 + settings: + application: + domain: localhost:8002 # 用于将HTTP请求重定向到HTTPS的主机名 + host: 0.0.0.0 # 启动的地址,主机ip 或者域名,默认0.0.0.0 + ishttps: false # 是否为HTTPS + mode: dev # 开发模式 + name: ferry-test # 服务名称 + port: "8002" # 启动端口 + readtimeout: 1 # 请求读取超时时间,从连接被接受(accept)到request body完全被读取(如果你不读取body,那么时间截止到读完header为止) + writertimeout: 2 # 从request header的读取结束开始,到response write结束为止(也就是ServeHTTP 方法的声明周期) + database: + dbtype: mysql # 数据库类型 + host: 127.0.0.1 # 数据库地址 + name: ferry # 数据库名称 + password: 123456 # 数据库密码 + port: 3306 # 数据库端口 + username: ferry # 数据库用户名 + email: + alias: ferry # 邮箱别名 + host: smtp.163.com # 邮件服务器 + pass: your password # 邮箱密码 + port: 465 # 邮件服务器端口 + user: fdevops@163.com # 邮箱账号 + gorm: + logmode: 0 # gorm详细日志输出,0表示不输出,1表示输出 + maxidleconn: 0 # 最大空闲连接 + maxopenconn: 20000 # 最大连接数据 + jwt: + secret: ferry # JWT加密字符串 + timeout: 3600 # 过期时间单位:秒 + log: + dir: logs # 日志路径 + operdb: false + ssl: + key: keystring + pem: temp/pem.pem + +## 本地开发 + +后端程序启动: + + # 1\. 拉取代码,以下命令二选一即可: + git clone https://github.com/lanyulei/ferry.git + git clone https://gitee.com/yllan/ferry.git + + # 2\. 进入工作路径 + cd ferry + + # 3\. 修改配置 + vim config/settings.dev.yml + 1). 修改为自己的数据库信息 + 2). 修改为自己的邮件服务器地址 + 其他的根据情况来修改调整 + + # 4\. 安装依赖 + go get + + # 5\. 连接数据库,并创建数据库 + create database ferry charset 'utf8mb4'; + + # 6\. 初始化数据结构 + go run main.go init -c=config/settings.dev.yml + + # 7\. 测试启动程序,没有报错及没有问题 + go run main.go server -c=config/settings.dev.yml + + # 8\. 热加载方式启动 + air + +前端程序启动: + + # 1\. 拉取代码,以下命令二选一即可: + git clone https://github.com/lanyulei/ferry_web.git + git clone https://gitee.com/yllan/ferry_web.git + + # 2\. 进入工作路径 + cd ferry_web + + # 3\. 安装依赖 + npm config set registry https://registry.npm.taobao.org + npm install + # 若npm install安装失败,可尝试使用一下命令安装 + npm install --unsafe-perm + + # 推荐使用cnpm + npm install -g cnpm --registry=https://registry.npm.taobao.org + cnpm install + + # 4\. 启动程序 + npm run dev + + # 5\. 访问http://localhost:9527,是否可正常访问 + +## 部署线上 + +后端部署: + + # 1\. 拉取代码,以下命令二选一即可: + git clone https://github.com/lanyulei/ferry.git + git clone https://gitee.com/yllan/ferry.git + + # 2\. 进入工作路径 + cd ferry + + # 3\. 交叉编译(centos) + env GOOS=linux GOARCH=amd64 go build + 更多交叉编译内容,请访问 https://www.fdevops.com/2020/03/08/go-locale-configuration + + # 4\. config目录上传到项目根路径下,并确认配置信息是否正确 + vim config/settings.yml + 1). 修改为自己的数据库信息 + 2). 修改为自己的邮件服务器地址 + 其他的根据情况来修改调整 + + # 4\. 创建日志路径及静态文件经历 + mkdir -p log static/uploadfile static/scripts static/template + + # 5\. 将本地项目下static/template目录下的所有文件上传的到,服务器对应的项目目录下static/template + + # 6\. 连接数据库,并创建数据库 + create database ferry charset 'utf8mb4'; + + # 7\. 初始化数据 + ./ferry init -c=config/settings.yml + + # 8\. 启动程序,推荐通过"进程管理工具"进行启动维护 + nohup ./ferry server -c=config/settings.yml > /dev/null 2>&1 & + +前端部署: + + # 1\. 拉取代码,以下命令二选一即可: + git clone https://github.com/lanyulei/ferry_web.git + git clone https://gitee.com/yllan/ferry_web.git + + # 2\. 进入工作路径 + cd ferry_web + + # 3\. 安装依赖 + npm config set registry https://registry.npm.taobao.org + npm install + # 若npm install安装失败,可尝试使用一下命令安装 + npm install --unsafe-perm + + # 推荐使用cnpm + npm install -g cnpm --registry=https://registry.npm.taobao.org + cnpm install + + # 4\. 修改 .env.production 文件 + # base api + VUE_APP_BASE_API = 'http://fdevops.com:8001' # 修改为您自己的域名 + + # 5\. 编译 + npm run build:prod + + # 6\. 将dist目录上传至项目路径下即可。 + mv dist web + + # 7\. nginx配置,根据业务自行调整即可 + server { + listen 8001; # 监听端口 + server_name localhost; # 域名可以有多个,用空格隔开 + + #charset koi8-r; + + #access_log logs/host.access.log main; + location / { + root /data/ferry/web; + index index.html index.htm; #目录内的默认打开文件,如果没有匹配到index.html,则搜索index.htm,依次类推 + } + + #ssl配置省略 + location /api { + # rewrite ^.+api/?(.*)$ /$1 break; + proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址 + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + # 登陆 + location /login { + proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址 + } + + # 刷新token + location /refresh_token { + proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址 + } + + # 接口地址 + location /swagger { + proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址 + } + + # 后端静态文件路径 + location /static/uploadfile { + proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址 + } + + #error_page 404 /404.html; #对错误页面404.html 做了定向配置 + + # redirect server error pages to the static page /50x.html + #将服务器错误页面重定向到静态页面/50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } diff --git a/docs/document/introduction.md b/docs/document/introduction.md new file mode 100644 index 0000000..2c7df56 --- /dev/null +++ b/docs/document/introduction.md @@ -0,0 +1,55 @@ +# 简介 + +本系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统,当然也可以称之为工作流引擎。 + +致力于减少跨部门之间的沟通,自动任务的执行,提升工作效率与工作质量,减少不必要的工作量与人为出错率。 + +演示Demo: [http://fdevops.com:8001/](http://fdevops.com:8001/) + +账号密码:admin/123456 + +Github: [https://github.com/lanyulei/ferry](https://github.com/lanyulei/ferry) + +Gitee: [https://gitee.com/yllan/ferry](https://gitee.com/yllan/ferry) + +文档:[https://www.fdevops.com/docs/ferry-tutorial-document/introduction](https://www.fdevops.com/docs/ferry-tutorial-document/introduction) + +演示Demo上,将删除的功能全部隐藏了,因为之前发生过,有人恶意删除所有可删除的数据,包括流程数据和用户数据,因此,clone下来的代码是有删除之类的动作的。 + +## 功能 + +下面对本系统的功能做一个简单介绍。 + +工单系统相关功能: + +* 工单提交申请 +* 工单统计 +* 多维度工单列表,包括(我创建的、我相关的、我待办的、所有工单) +* 自定义流程 +* 自定义模版 +* 任务钩子 +* 任务管理 +* 催办 +* 转交 +* 手动结单 +* 加签 +* 多维度处理人,包括(个人,变量(创建者、创建者负责人)) +* 排他网关,即根据条件判断进行工单跳转 +* 并行网关,即多个节点同时进行审批处理 +* 通知提醒(目前仅支持邮件) +* 流程分类管理 + +权限管理相关功能,使用casbin实现接口权限控制: + +* 用户、角色、岗位的增删查改,批量删除,多条件搜索 +* 角色、岗位数据导出Excel +* 重置用户密码 +* 维护个人信息,上传管理头像,修改当前账户密码 +* 部门的增删查改 +* 菜单目录、跳转、按钮及API接口的增删查改 +* 登陆日志管理 +* 左菜单权限控制 +* 页面按钮权限控制 +* API接口权限控制 + +目前大致上就是以上功能了,如果您觉得我有拉下的功能,还请留言提醒我,感谢。 diff --git a/docs/document/new_process.md b/docs/document/new_process.md new file mode 100644 index 0000000..1aa2d4d --- /dev/null +++ b/docs/document/new_process.md @@ -0,0 +1,25 @@ +# 创建一个新流程 + +## 流程分类 + +为区分不同功能,不同类型的流程,因此加入分类的概念,方便管理和维护不同功能的流程。 + +分类创建较为简单,不在过多赘述。 + +## 创建模版 + +根据实际情况,填写下面的数据。 + +## 创建流程 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-7.png) + +## 创建任务 + +根据实际情况创建Python或者Shell的脚本任务,这个步骤相对简单,不在过多赘述。 + +## 申请新创建的流程 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-8.png) + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-9.png) diff --git a/docs/document/parallel_gateway.md b/docs/document/parallel_gateway.md new file mode 100644 index 0000000..22cd246 --- /dev/null +++ b/docs/document/parallel_gateway.md @@ -0,0 +1,7 @@ +# 并行网关 + +在日常的工作中,可能会有需要多个处理人并行进行处理,只有所有的处理人都完成处理才可以跳转到下一个阶段。基于这种情况的出现,因此有了并行网关的概念。 + +在这种并行处理的情况下,处理的顺序无所谓,但是需要全部处理完成。才能进入下一个阶段,同时并行网关的情况下,会无视条件判断。 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-14.png) diff --git a/docs/document/system_manager.md b/docs/document/system_manager.md new file mode 100644 index 0000000..1b7a712 --- /dev/null +++ b/docs/document/system_manager.md @@ -0,0 +1,31 @@ +# 系统管理 + +本文主要是介绍以下非增删改查的功能。 + +## 角色管理 + +对角色的增删查改、权限的管控、批量删除、导出功能。 + +## 菜单管理 + +菜单的增删查改。 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-14.png) + +* 上级菜单:菜单或者按钮的父亲。 +* 菜单标题:就是菜单的名字。 +* 显示顺序:菜单展示时候的顺序。 +* 菜单类型:啥功能的菜单。 + * 目录:对菜单进行区分维护。 + * 菜单:可跳转对对应的页面。 + * 按钮:页面上对应的按钮操作。 + * 接口:后端对应的API地址。 +* 菜单图标:左菜单栏展示需要展示的图标。 +* 路由名称:Vue路由设置的名称。 +* 组件路径:前端程序View对应下文件路径,包括文件名称。 +* 是否外链:是否是外部链接。 +* 路由地址:可访问的url地址。 +* 权限标识:权限控制需要的标识。 +* 菜单状态:显示或者隐藏菜单项。 + +此外需要注意的是,每个后端需要跟前端交互的接口,都需要写入到菜单中的接口权限中。 diff --git a/docs/document/urge.md b/docs/document/urge.md new file mode 100644 index 0000000..7c1c18f --- /dev/null +++ b/docs/document/urge.md @@ -0,0 +1,5 @@ +# 催办 + +通过邮件的方式,来对当前处理人进行工单催促,十分钟内只能催促一次。 + +![](https://www.fdevops.com/wp-content/uploads/2020/07/image-10.png) diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..5ceb82d --- /dev/null +++ b/docs/index.md @@ -0,0 +1,15 @@ +# 目录 + +* [介绍](https://lanyulei.github.io/ferry_docs/document/introduction "介绍") +* [安装](https://lanyulei.github.io/ferry_docs/document/install "安装") +* [IDE 开发](https://lanyulei.github.io/ferry_docs/document/ide_development "IDE 开发") +* [系统管理](https://lanyulei.github.io/ferry_docs/document/system_manager "系统管理") +* 工单系统 +* * [创建一个新流程](https://lanyulei.github.io/ferry_docs/document/new_process "创建一个新流程") +* * [催办](https://lanyulei.github.io/ferry_docs/document/urge "催办") +* * [转交](https://lanyulei.github.io/ferry_docs/document/forward "转交") +* * [结单](https://lanyulei.github.io/ferry_docs/document/end_process "结单") +* * [排他网关](https://lanyulei.github.io/ferry_docs/document/exclusive_gateway "排他网关") +* * [并行网关](https://lanyulei.github.io/ferry_docs/document/parallel_gateway "并行网关") +* * [会签](https://lanyulei.github.io/ferry_docs/document/countersign "会签") +* [Mac、Linux、Windows下分别进行交叉编译](https://lanyulei.github.io/ferry_docs/document/cross_compile "Mac、Linux、Windows下分别进行交叉编译")