Этот пример использования включает динамический стоп-лист, который оценивает серию условий для определения потока выполнения. Стоп-лист содержит различные условия, проверяющие входные значения. На основе этих условий система определяет поток и выполняет соответствующую функцию, в конечном итоге возвращая результат.
Реализация системы задач или условий в Golang, которая может быть настроена и сохранена в базе данных, аналогично блок-схеме.
- Определите структуры для задач и условий.
- Реализуйте способ соединения задач и условий.
- Создайте методы для оценки условий и выполнения задач.
- Разработайте систему для сохранения и загрузки потока из базы данных.
- Логические операции: AND, OR
- Операции сравнения: больше, меньше
AND[rule1, rule2, OR[rule3, rule4]]
OR[rule1, rule2, AND[rule3, rule4]]
rule[age] = struct{ requered, min, max, equal, any[], not[] }
example
[{
"type": "AND",
"errMessage": "Main condition error",
"validation": {
"age": {
"required": true,
"max": 30.0
}
},
"subConditions": {
"type": "OR",
"errMessage": "Sub condition error",
"validation": {
"amount": {
"required": true,
"min": 10.0,
"max": 3000.0
}
}
}
}]
Flow
type Flow struct {
Id string `json:"id"`
Name string `json:"name"`
StartNode *Node `json:"start_node"`
}
// Node of flow
type Node struct {
Rules []Condition `json:"rules,omitempty"`
Task *Task `json:"task,omitempty"`
TrueNode *Node `json:"true_node,omitempty"`
FalseNode *Node `json:"false_node,omitempty"`
}
// Id of task function
type Task struct {
Id string `json:"id"`
Name string `json:"name"`
}
Todo :
database
example
test