Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

anyflow中 switch-case最佳实践应该怎么设计? #79

Open
tcp999 opened this issue Jan 4, 2025 · 2 comments
Open

anyflow中 switch-case最佳实践应该怎么设计? #79

tcp999 opened this issue Jan 4, 2025 · 2 comments

Comments

@tcp999
Copy link

tcp999 commented Jan 4, 2025

image
你好:
如图,在我的workflow中存在类似于Z节点的存在,需要在Z中做switch case来确认到底走哪个流程(A1/B1/C1... ,N选一)。
请问,对于Z->A1/B1/C1这种switch-case,最佳实践是怎样的?
当前我的做法是

  1. 对于Z:
     ANYFLOW_INTERFACE(
       ANYFLOW_EMIT_DATA(int, a)
       ANYFLOW_EMIT_DATA(int, b)
       ANYFLOW_EMIT_DATA(int, b)
       )
  2. 对于a1/b1/c1均有:
     ANYFLOW_INTERFACE(
       ANYFLOW_DEPEND_DATA(int, a/b/c)
       )
  3. 目前我在Z的process中是这么做的:通过cancel掉其他case的depend data实现。
switch ($value)                       
{                                     
    case $a_value:                    
        *a.emit() = 1;                
        b.emit().cancel();            
        c.emit().cancel();            
        break;                        
    case $b_value:                    
        a.emit().cancel();            
        *b.emit() = 2;                
        c.emit().cancel();            
        break;                        
    case $c_value:                    
        a.emit().cancel();            
        b.emit().cancel();            
        *c.emit() = 3;                
        break;                        
}                                     
@oathdruid
Copy link
Collaborator

这个场景一般更推荐用条件依赖来解决,也就是,end到ak,bk,ck的依赖,是有条件成立的;先用一个算子计算出v,然后v=a让end到ak的依赖生效;v=b让end到bk的边生效;

条件依赖是一个内置功能可以参考expression processor的条件运算符和select processor的实现

@tcp999
Copy link
Author

tcp999 commented Jan 7, 2025

这个场景一般更推荐用条件依赖来解决,也就是,end到ak,bk,ck的依赖,是有条件成立的;先用一个算子计算出v,然后v=a让end到ak的依赖生效;v=b让end到bk的边生效;

条件依赖是一个内置功能可以参考expression processor的条件运算符和select processor的实现

这个思路非常的赞,对于新手来说像是醍醐灌顶,非常感谢来自深夜的回复!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants