动作内子程序较多,是否可以通过输入子程序的名称和子程序的输入参数来运行子程序,而不是选择好子程序才能运行。
类似下面这种
因为子程序有自己的参数定义,每个子程序可能需要不同的表单,而动作只有一个固定的参数,所以两者不同,子程序没法使用这样的界面。
但是可以在表达式里直接调用,类似于这样的方式:
$=_context.RunSp("子程序名称", new Dictionary<string,string>(){{"p1", "value1"},{"p2", "value2"}}
或使用匿名对象传递参数,例如:
$=_context.RunSp("子程序名称", new {key1 = "value1", key2 = "value2" } );
这里可以直接使用c#语法写比较复杂的判断来执行不同的子程序。
如果每个子程序都使用类似的参数或没有参数,也可以考虑直接从动作参数中传入子程序名,使用表达式进行直接调用。
需要注意的时,如果子程序里使用界面显示,可能会造成冲突。测试之前备份好动作。