Repository navigation
Expand file tree
/
Copy pathprocess.go
More file actions
131 lines (117 loc) · 5.83 KB
/
Copy pathprocess.go
File metadata and controls
131 lines (117 loc) · 5.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package workflow
import "github.com/yaoapp/gou"
// WARNING: the Workflow widget will be removed from yao engine
// Process
// 读取工作流 xiang.workflow.Find(name, workflow_id)
// 读取工作流 xiang.workflow.Open(name, uid, data_id)
// 保存工作流 xiang.workflow.Save(name, uid, node_name, data_id, input, ...output)
// 进入下一个节点 xiang.workflow.Next(name, uid, workflow_id, output)
// 跳转到指定节点 xiang.workflow.Goto(name, uid, workflow_id, node_name, output)
// 更新工作流状态 xiang.workflow.Status(name, uid, workflow_id, status_name, output)
// 标记结束流程 xiang.workflow.Done(name, uid, workflow_id, output)
// 标记关闭流程 xiang.workflow.Close(name, uid, workflow_id, output)
// 标记重置流程 xiang.workflow.Reset(name, uid, workflow_id, output)
func init() {
// 注册处理器
gou.RegisterProcessHandler("xiang.workflow.Find", ProcessFind)
gou.RegisterProcessHandler("xiang.workflow.Setting", ProcessSetting)
gou.RegisterProcessHandler("xiang.workflow.Open", ProcessOpen)
gou.RegisterProcessHandler("xiang.workflow.Save", ProcessSave)
gou.RegisterProcessHandler("xiang.workflow.Next", ProcessNext)
gou.RegisterProcessHandler("xiang.workflow.Goto", ProcessGoto)
gou.RegisterProcessHandler("xiang.workflow.Status", ProcessStatus)
gou.RegisterProcessHandler("xiang.workflow.Done", ProcessDone)
gou.RegisterProcessHandler("xiang.workflow.Close", ProcessClose)
gou.RegisterProcessHandler("xiang.workflow.Reset", ProcessReset)
}
// ProcessFind xiang.workflow.Find 读取工作流
// args: [工作流名称*, 工作流ID*]
// return: map[string]interface{} 工作流数据记录
func ProcessFind(process *gou.Process) interface{} {
process.ValidateArgNums(2)
wflow := Select(process.ArgsString(0))
return wflow.Find(process.ArgsInt(1))
}
// ProcessOpen xiang.workflow.Open 读取工作流
// args: [工作流名称*, 当前用户ID*, 关联数据ID*]
// return: map[string]interface{} 工作流数据记录
func ProcessOpen(process *gou.Process) interface{} {
process.ValidateArgNums(3)
wflow := Select(process.ArgsString(0))
return wflow.Open(process.ArgsInt(1), process.Args[2])
}
// ProcessSetting xiang.workflow.Setting 读取工作流配置
// args: [工作流名称*, 当前用户ID*, 关联数据ID*]
// return: map[string]interface{} 工作流配置
func ProcessSetting(process *gou.Process) interface{} {
process.ValidateArgNums(3)
wflow := Select(process.ArgsString(0))
return wflow.Setting(process.ArgsInt(1), process.Args[2])
}
// ProcessSave xiang.workflow.Save 保存工作流节点信息
// args: [工作流名称*, 当前用户ID*, 节点名称*, 关联数据ID*, 输入数据*, 输出数据] (输入数据: {"data":{}, "form":{}} data 关联数据记录信息, form 工作流body表单信息, 输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessSave(process *gou.Process) interface{} {
process.ValidateArgNums(5)
wflow := Select(process.ArgsString(0))
input := InputOf(process.ArgsMap(4))
71D9
output := map[string]interface{}{}
if process.NumOfArgsIs(6) {
output = process.ArgsMap(5)
}
return wflow.Save(process.ArgsInt(1), process.ArgsString(2), process.Args[3], input, output)
}
// ProcessNext xiang.workflow.Next 进入下一个节点
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessNext(process *gou.Process) interface{} {
process.ValidateArgNums(4)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(3)
return wflow.Next(process.ArgsInt(1), process.ArgsInt(2), output)
}
// ProcessGoto xiang.workflow.Goto 跳转到指定节点
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 节点名称*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessGoto(process *gou.Process) interface{} {
process.ValidateArgNums(5)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(4)
return wflow.Goto(process.ArgsInt(1), process.ArgsInt(2), process.ArgsString(3), output)
}
// ProcessStatus xiang.workflow.Status 更新工作流状态
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 状态名称*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessStatus(process *gou.Process) interface{} {
process.ValidateArgNums(5)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(4)
return wflow.Status(process.ArgsInt(1), process.ArgsInt(2), process.ArgsString(3), output)
}
// ProcessDone xiang.workflow.Done 标记结束流程
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessDone(process *gou.Process) interface{} {
process.ValidateArgNums(4)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(3)
return wflow.Done(process.ArgsInt(1), process.ArgsInt(2), output)
}
// ProcessClose xiang.workflow.Close 标记关闭流程
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessClose(process *gou.Process) interface{} {
process.ValidateArgNums(4)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(3)
return wflow.Close(process.ArgsInt(1), process.ArgsInt(2), output)
}
// ProcessReset xiang.workflow.Reset 标记重置流程
// args: [工作流名称*, 当前用户ID*, 工作流ID*, 输出数据*] (输出数据: {"foo":"bar"} )
// return: map[string]interface{} 工作流数据记录
func ProcessReset(process *gou.Process) interface{} {
process.ValidateArgNums(4)
wflow := Select(process.ArgsString(0))
output := process.ArgsMap(3)
return wflow.Reset(process.ArgsInt(1), process.ArgsInt(2), output)
}