Skip to content

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

@tcp999

Description

@tcp999

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;                        
}                                     

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions