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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions