我有一个标准的视流流程,在一个状态id中,我想根据其中一个字段中引入的文本值拆分我的流程。我已经在models.py
中定义了我感兴趣的领域estado_de_aprobacion = models.CharField(max_length = 15,choices = REVIEW_CHOICES)
我的选择:
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
type SimpleResponse struct {
TextToSpeech string `json:"textToSpeech"`
DisplayText string `json:"displayText"`
}
type BasicCard struct {
FormattedText string `json:"formattedText"`
ImageDisplayOptions string `json:"imageDisplayOptions"`
}
type Items []struct {
SimpleResponse SimpleResponse `json:"simpleResponse"`
BasicCard BasicCard `json:"basicCard"`
}
type RichResponse struct{
Items Items `json:"items"`
}
group := RichResponse{
Items: Items{
SimpleResponse{"foo1", "foo2"},
BasicCard{
FormattedText: "foo3",
ImageDisplayOptions: "CROPPED",
},
},
}
b, err := json.Marshal(group)
if err != nil {
fmt.Println("error:", err)
}
os.Stdout.Write(b)
}
所以基本上发生的是显示一个下拉列表,以便用户可以选择其中一个选项,并据此在流程中应用followinf拆分:
REVIEW_CHOICES = (
('APROBACION_FINAL', 'Aprobar definitivamente'),
('APROBACION_NUEVO_REVISOR', 'Enviar a otro revisor'),
('DEVOLVER_EJECUTOR','Devolver al ejecutor')
)
我假设lamba表达式返回指定过程属性中包含的值,但是由于比较器无法正常工作,我认为它是错误的。
答案 0 :(得分:1)
让我们解压缩cond
值中发生的事情。
cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL')
(lambda act: act.process.estado_de_aprobacion)
返回一个函数,该函数从act
中提取相关字段。
然后,您将其与=='APROBACION_FINAL'
进行比较,因为您正在比较lambda函数和字符串,所以它总是会失败。
因此,传递给函数的cond
的实际值为False
。
我假设cond
必须是一个返回true或false的函数?在这种情况下,您应该在lambda函数中进行比较。
cond=lambda act: act.process.estado_de_aprobacion=='APROBACION_FINAL'
原始代码中的提取括号是不必要的,实际上可能是问题的根源。