3 Star 1 Fork 0

中光云计算(西安)有限公司/Doraemon

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.go 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
countpoison 提交于 2019-09-04 21:54 . update workflow
package workflow
import (
"errors"
"github.com/segmentio/ksuid"
)
//新建一个流程模板
func AddFlow(flowname string) (*Flow, error) {
wf := Flow{}
wf.Id = ksuid.New().String()
wf.Name = flowname
err := addFlow(&wf)
if err != nil {
return nil, err
}
return &wf, err
}
//用ID查询一个流程模板
func FlowOne(flowid string) (*Flow, error) {
return selectFlow(flowid)
}
//修改一个流程模板的名字
func (wf *Flow) UpdateFlow(flowname string) error {
wf.Name = flowname
return updateFlow(wf)
}
//给流程模板里添加一个节点
func (wf *Flow) AddNode(nodename, acttype string, approvers []string) (*Node, error) {
nd := &Node{}
nd.Id = ksuid.New().String()
nd.Name = nodename
nd.ActType = acttype
nd.FlowId = wf.Id
nd.Approvers = approvers
nd.Operations = []int{0, 1, 2, 3, 4}
err := addNode(nd)
return nd, err
}
//根据id查询一个节点
func NodeOne(ndid string) (*Node, error) {
return selectNode(ndid)
}
//更新一个节点(节点名称,操作类型:{or and},审批人[]string)
func (nd *Node) UpdateNode(nodename, acttype string, approvers []string) (*Node, error) {
nd.Name = nodename
nd.ActType = acttype
nd.Approvers = approvers
err := updateNode(nd)
if err != nil {
return nil, err
}
return nd, err
}
//删除一个节点
func (nd *Node) RemoveNode() error {
return deleteNode(nd.Id)
}
//添加一个节点连接---线(名称,向后的一个节点)
func (nd *Node) AddFlowLink(name, afterNodeid string) (*Nodelink, error) {
_, err := taskNodelink(afterNodeid, nd.Id)
if err == nil {
return nil, errors.New("loop back")
}
_, err = taskNodelink(nd.Id, afterNodeid)
if err == nil {
return nil, errors.New("nodelink is exist")
}
nl := &Nodelink{}
nl.BeforeNode = nd.Id
nl.FlowId = nd.FlowId
nl.AfterNode = afterNodeid
nl.Name = name
nl.Id = ksuid.New().String()
err = addNodelink(nl)
if err != nil {
return nil, err
}
return nl, err
}
//更新一个线的名称
func (nl *Nodelink) UpdateFlowLink(name string) (*Nodelink, error) {
nl.Name = name
err := addNodelink(nl)
if err != nil {
return nil, err
}
return nl, err
}
//删除一个线
func (nl *Nodelink) RemoveFlowLink() error {
return deleteNodelink(nl.Id)
}
//根据id查询一个线
func NodeLinkOne(nlid string) (*Nodelink, error) {
return selectNodelink(nlid)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/countpoison/Doraemon.git
git@gitee.com:countpoison/Doraemon.git
countpoison
Doraemon
Doraemon
f6c0e8d84ec1

搜索帮助

0d507c66 1850385 C8b1a773 1850385