flow_core
flow_core copied to clipboard
工作流的定义可以修改吗
比如你seed.rb里的定义,deploy之后,我以后中间想继续插流程,可以吗
seed.rb 里的代码是利用我提供的 DSL 去定义 Petrinet,所以你执行后会产生一个新 Workflow,不会替代已有的
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了 @jasl
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了
每个 transition 应该有不同的trigger,因为这一步骤的流转配置是配置在 trigger 上的,虽然绝大多数步骤都是相似的,但是审批人之类的条件信息还是不同的,如果多个 transition 共享一个trigger,如果trigger 被修改,引发的对流程的破坏会更大
我想请教一下,审批驳回的逻辑,也就是你之前例子里面ltractive routing,用DSL怎么配出来,是在某个节点,output两个place,一个指向后面的place,一个指向前面的place,然后通过ArcGuard来判断去哪吗
FlowCore::Definition.new name: "Simple sequence" do |net|
net.start_place :start, name: "Start"
net.end_place :end, name: "End"
net.transition :t1, input: :start, output: :p1
net.transition :t2, input: :p1, output: %i[start end]
end.deploy!
@jasl
我想请教一下,审批驳回的逻辑,也就是你之前例子里面ltractive routing,用DSL怎么配出来,是在某个节点,output两个place,一个指向后面的place,一个指向前面的place,然后通过ArcGuard来判断去哪吗
FlowCore::Definition.new name: "Simple sequence" do |net| net.start_place :start, name: "Start" net.end_place :end, name: "End" net.transition :t1, input: :start, output: :p1 net.transition :t2, input: :p1, output: %i[start end] end.deploy!@jasl
先稍等啊,我手头有点事要出门一趟,我晚上到家回复你。。。
我想请教一下,审批驳回的逻辑,也就是你之前例子里面ltractive routing,用DSL怎么配出来,是在某个节点,output两个place,一个指向后面的place,一个指向前面的place,然后通过ArcGuard来判断去哪吗
FlowCore::Definition.new name: "Simple sequence" do |net| net.start_place :start, name: "Start" net.end_place :end, name: "End" net.transition :t1, input: :start, output: :p1 net.transition :t2, input: :p1, output: %i[start end] end.deploy!@jasl
你要在哪年的RubyConfChina微信群可以加我好友,这样有问题问我更方便
我想请教一下,审批驳回的逻辑,也就是你之前例子里面ltractive routing,用DSL怎么配出来,是在某个节点,output两个place,一个指向后面的place,一个指向前面的place,然后通过ArcGuard来判断去哪吗
FlowCore::Definition.new name: "Simple sequence" do |net| net.start_place :start, name: "Start" net.end_place :end, name: "End" net.transition :t1, input: :start, output: :p1 net.transition :t2, input: :p1, output: %i[start end] end.deploy!@jasl
先稍等啊,我手头有点事要出门一趟,我晚上到家回复你。。。
多谢了
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了
每个 transition 应该有不同的trigger,因为这一步骤的流转配置是配置在 trigger 上的,虽然绝大多数步骤都是相似的,但是审批人之类的条件信息还是不同的,如果多个 transition 共享一个trigger,如果trigger 被修改,引发的对流程的破坏会更大
如果要为每个transition定义不同的trigger,我应该继承你哪个类,实现什么方法,才能达成这样的效果
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了
每个 transition 应该有不同的trigger,因为这一步骤的流转配置是配置在 trigger 上的,虽然绝大多数步骤都是相似的,但是审批人之类的条件信息还是不同的,如果多个 transition 共享一个trigger,如果trigger 被修改,引发的对流程的破坏会更大
如果要为每个transition定义不同的trigger,我应该继承你哪个类,实现什么方法,才能达成这样的效果
默认似乎就是 “为每个transition定义不同的trigger”,Transition has one Trigger https://github.com/rails-engine/flow_core/blob/master/app/models/flow_core/transition.rb#L24
Transition trigger 的例子参考参考 Dummy app 比如人工审批 https://github.com/rails-engine/flow_core/blob/master/test/dummy/app/models/flow_kit/transition_triggers/human_task.rb
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了
每个 transition 应该有不同的trigger,因为这一步骤的流转配置是配置在 trigger 上的,虽然绝大多数步骤都是相似的,但是审批人之类的条件信息还是不同的,如果多个 transition 共享一个trigger,如果trigger 被修改,引发的对流程的破坏会更大
如果要为每个transition定义不同的trigger,我应该继承你哪个类,实现什么方法,才能达成这样的效果
默认似乎就是 “为每个transition定义不同的trigger”,Transition has one Trigger https://github.com/rails-engine/flow_core/blob/master/app/models/flow_core/transition.rb#L24
Transition trigger 的例子参考参考 Dummy app 比如人工审批 https://github.com/rails-engine/flow_core/blob/master/test/dummy/app/models/flow_kit/transition_triggers/human_task.rb
你这HumanTask继承Trigger,就是在on_task_enable中决定下发什么任务,这和我之前理解的用法是一样的,你意思这种做法就是为每个任务定义不同的trigger了吗,我以为比如还有human2Task,human3Task
非常抱歉两年后还来打扰你,我们的业务经过两年的发展后,流程趋于稳定,但流程复杂度非常高,不找个这样的库不太行了
问一个设计上的问题,很显然在一个erp系统里,一个workflow走到不同的环节所要完成的task肯定是大相径庭的,我是否应该为所有的transition定义不同的trigger,还是所有transition用相同的trigger,然后根据workflow目前走到的位置去下发不同的task。还有就是一个transition如果没有trigger,从业务层来说感觉就和workflow失联了
每个 transition 应该有不同的trigger,因为这一步骤的流转配置是配置在 trigger 上的,虽然绝大多数步骤都是相似的,但是审批人之类的条件信息还是不同的,如果多个 transition 共享一个trigger,如果trigger 被修改,引发的对流程的破坏会更大
如果要为每个transition定义不同的trigger,我应该继承你哪个类,实现什么方法,才能达成这样的效果
默认似乎就是 “为每个transition定义不同的trigger”,Transition has one Trigger https://github.com/rails-engine/flow_core/blob/master/app/models/flow_core/transition.rb#L24 Transition trigger 的例子参考参考 Dummy app 比如人工审批 https://github.com/rails-engine/flow_core/blob/master/test/dummy/app/models/flow_kit/transition_triggers/human_task.rb
你这HumanTask继承Trigger,就是在on_task_enable中决定下发什么任务,这和我之前理解的用法是一样的,你意思这种做法就是为每个任务定义不同的trigger了吗,我以为比如还有human2Task,human3Task
因为是通过 has_one 关联的具体的 trigger,所以你直接指向不同的 trigger 记录就能设置不同的了
非常抱歉两年后还来打扰你,我们的业务经过两年的发展后,流程趋于稳定,但流程复杂度非常高,不找个这样的库不太行了
欢迎交流,这个库我觉得没过时,表单部分 Rails 8 会有一个官方的虚拟模型方案,所以等 8 出来我可以再维护下
这个流程我感觉不难,你看看能否通过 dummy app 能否配出来你的流程?
这个流程我感觉不难,你看看能否通过 dummy app 能否配出来你的流程?
用你这个理论上是不难,并行合并,再并行,再合并,用aasm是搞不出来,很难用一个单一状态来描述我的货物处于哪个阶段
这个流程我感觉不难,你看看能否通过 dummy app 能否配出来你的流程?
用你这个理论上是不难,并行合并,再并行,再合并,用aasm是搞不出来
状态机肯定表达不了并行,我记得我20年在 RubyConf China 上分享过不同的工作流的原理的优缺点对比,你可以翻翻~
我这两三年是去做区块链啦,所以就离这个远了
你的Demo运行时有错误,不知道是升到rails7的原因,还是我是苹果芯片版的mac
而且你这个生成图的依赖看着就挺吓人,我能否不用你这套,简单的用我部署的workflow的结构,找个其他的画流程图的应用把图画出来,纯前端JS画都行,不知道你有没有相关推荐,编辑流程图好像也没太大必要,有新环节,重新搞一个workflow出来就行了
你的Demo运行时有错误,不知道是升到rails7的原因,还是我是苹果芯片版的mac
而且你这个生成图的依赖看着就挺吓人,我能否不用你这套,简单的用我部署的workflow的结构,找个其他的画流程图的应用把图画出来,纯前端JS画都行,不知道你有没有相关推荐
这个错误是你没装 graphviz 文档提了
你跑 brew install graphviz 就行了
我懒得写前端而且我也不知道哪个通用,所以用 graphviz 来画了就,丑是丑了点,但是能用
而且你这个生成图的依赖看着就挺吓人
我不知道你说的是什么,我只提供了 graphviz 的流程图绘制和导出,这是个纯文本格式

而且你这个生成图的依赖看着就挺吓人,我能否不用你这套,简单的用我部署的workflow的结构,找个其他的画流程图的应用把图画出来,纯前端JS画都行,不知道你有没有相关推荐