当前位置: 首页 > wzjs >正文

做的好的个人网站知乎哈尔滨信息网免费招聘

做的好的个人网站知乎,哈尔滨信息网免费招聘,p2p网站设计,用织梦做的企业网站一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…

一、引入依赖

这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语

go get github.com/s8sg/goflow

二、画出我们的工作流程

在这里插入图片描述

三、编写代码

package mainimport ("encoding/json""fmt"flow "github.com/s8sg/goflow/flow/v1"goflow "github.com/s8sg/goflow/v1""log""math/rand""strconv"
)// Input 输入一个数字
func Input(data []byte, option map[string][]string) ([]byte, error) {var input map[string]int// 获取输入的数if err := json.Unmarshal(data, &input); err != nil {return nil, err}outputInt := input["input"]// 将数据交给工作流处理return []byte(strconv.Itoa(outputInt)), nil
}// AddOne 加上10以内的一个随机整数
func AddOne(data []byte, option map[string][]string) ([]byte, error) {// 获取上一个工作流的数据num, _ := strconv.Atoi(string(data))outputInt := num + rand.Intn(10) + 1fmt.Println("AddOne = ", outputInt)// 交给下一个工作流处理return []byte(strconv.Itoa(outputInt)), nil
}// AddTwo 加上10以内的一个随机整数
func AddTwo(data []byte, option map[string][]string) ([]byte, error) {num, _ := strconv.Atoi(string(data))outputInt := num + rand.Intn(10) + 1fmt.Println("AddTwo = ", outputInt)return []byte(strconv.Itoa(outputInt)), nil
}// Aggregator 聚合节点
func Aggregator(data []byte, option map[string][]string) ([]byte, error) {fmt.Println("Aggregator = ", string(data))return data, nil
}// Expand10 扩大10倍
func Expand10(data []byte, option map[string][]string) ([]byte, error) {num, _ := strconv.Atoi(string(data))outputInt := num * 10fmt.Println("Expand10 = ", outputInt)return []byte(strconv.Itoa(outputInt)), nil
}// Expand100 扩大100倍
func Expand100(data []byte, option map[string][]string) ([]byte, error) {num, _ := strconv.Atoi(string(data))outputInt := num * 100fmt.Println("Expand100 = ", outputInt)return []byte(strconv.Itoa(outputInt)), nil
}// Output 输出节点
func Output(data []byte, option map[string][]string) ([]byte, error) {fmt.Println("Output = ", string(data))return data, nil
}// 定义我们自己的一个流程
func MyFlow(workflow *flow.Workflow, context *flow.Context) error {// 创建DAGdag := workflow.Dag()// 创建节点dag.Node("input", Input)dag.Node("add-one", AddOne)dag.Node("add-two", AddTwo)// 这个聚合节点,就需要拿到add-one和add-two的结果dag.Node("aggregator", Aggregator, flow.Aggregator(func(m map[string][]byte) ([]byte, error) {addOneResult, _ := strconv.Atoi(string(m["add-one"]))addTwoResult, _ := strconv.Atoi(string(m["add-two"]))num := addOneResult + addTwoResultfmt.Println("aggregator = ", num)return []byte(strconv.Itoa(num)), nil}))// 这个方式是获取到节点的数据进行判断,然后返回一个字符串数组f1 := func(bytes []byte) []string {num, _ := strconv.Atoi(string(bytes))fmt.Println("ConditionalBranch = ", num)if num > 10 {return []string{"moreThan"}}return []string{"lessThan"}}// 这个方法就是将分支的数据返回给outputf2 := func(m map[string][]byte) ([]byte, error) {if v, ok := m["moreThan"]; ok {i, _ := strconv.Atoi(string(v))fmt.Println("f2 moreThan = ", i)return v, nil}if v, ok := m["lessThan"]; ok {i, _ := strconv.Atoi(string(v))fmt.Println("f2 lessThan = ", i)return v, nil}return nil, nil}// 创建一个条件分支节点branches := dag.ConditionalBranch("judge", []string{"moreThan", "lessThan"}, f1, flow.Aggregator(f2))branches["moreThan"].Node("expand-10", Expand10)branches["lessThan"].Node("expand-100", Expand100)dag.Node("output", Output)// 构建关系dag.Edge("input", "add-one")dag.Edge("input", "add-two")dag.Edge("add-one", "aggregator")dag.Edge("add-two", "aggregator")dag.Edge("aggregator", "judge")dag.Edge("judge", "output")return nil
}func main() {fs := goflow.FlowService{Port:              10001,RedisURL:          "127.0.0.1:6379",RedisPwd:          "p@ssw0rd",WorkerConcurrency: 5,RetryCount:        0,}if err := fs.Register("myFlow", MyFlow); err != nil {log.Printf("goflow register err: %v\n", err)return}if err := fs.Start(); err != nil {panic(err)}
}

四、Postman测试

在这里插入图片描述

在这里插入图片描述


文章转载自:

http://uUdLERmd.rbbgh.cn
http://MnymN99k.rbbgh.cn
http://h60YbAdd.rbbgh.cn
http://c8pIgPJu.rbbgh.cn
http://ezmVKFCL.rbbgh.cn
http://v0nhkhQR.rbbgh.cn
http://hwb9PSIW.rbbgh.cn
http://H63S3Zj6.rbbgh.cn
http://8KMSlw6d.rbbgh.cn
http://aua55DjH.rbbgh.cn
http://KlNbNYrU.rbbgh.cn
http://pKnTEYa5.rbbgh.cn
http://7K680NKC.rbbgh.cn
http://I5Qjb9Xv.rbbgh.cn
http://q5ongXob.rbbgh.cn
http://uW6auJM7.rbbgh.cn
http://H5yhSrMu.rbbgh.cn
http://0LY6ohOh.rbbgh.cn
http://2z1iG3WC.rbbgh.cn
http://1irLnwxj.rbbgh.cn
http://tm74huJ6.rbbgh.cn
http://cbeBY3UF.rbbgh.cn
http://B8M7ZU0H.rbbgh.cn
http://TcJZUJw0.rbbgh.cn
http://KdbZFA6I.rbbgh.cn
http://Gdemlv81.rbbgh.cn
http://2RHf3vSS.rbbgh.cn
http://vKJY0PdY.rbbgh.cn
http://IivP5kyU.rbbgh.cn
http://CcvQazNn.rbbgh.cn
http://www.dtcms.com/wzjs/720518.html

相关文章:

  • 网页设计与网站建设完全学习手册semiconductor是什么意思
  • 新泰网站制作建材类网站建设需要的资料
  • 权重较高网站公司管理系统叫什么
  • 北京网站托管的公司南平建设集团网站
  • 客户端网站建设文档哪有做网站的公司
  • 网站建设详细流网站后台上传内容前台首页不显示
  • 冠县 网站建设企业网站建设实训总结
  • 南京制作网站如何做网页跳转
  • 网站备案提示wordpress调用制定id
  • 徐州企业网站设计校园跑腿小程序源码
  • 重庆地产网站建设方案许昌网站建设汉狮怎么样
  • 长沙网站推广平台龙岩会员系统小程序定制开发
  • 学建设网站去哪里学有哪些网站交互效果做的好的
  • 个人公司网站搭建如何做配音网站
  • 古典家具公司网站模板wordpress 升级后 插件
  • 莆田网站建设推广网站备案 不备案
  • 做前后端网站教程深圳市城市建设管理局
  • 网站后台如何修改新闻发布时间oecms(php企业网站管理系统)
  • 网站建设加关键词是什么意思163网易企业邮箱
  • 安的网络网站建设企业站官网
  • 长治公司网站建设wordpress获取当前分类不带连接
  • 哪个网上购物网站好wordpress 瀑布流 插件
  • 福田附件网站建设公司如何做好seo
  • 做cps要做什么类型的网站活动推广方案怎么写
  • 沈阳健网站青海网站开发公司
  • 网站建设新手教学视频塘沽做网站公司
  • 淘宝客网站建设公司超低价网站维护网站托管
  • 北京网站优化推广分析优化是什么意思?
  • 企业网站管理系统联系我们怎么添加建设银行网站钓鱼
  • 乐视网站建设目标中国建设银行网站忘记密码