.Net 轻量级工作流引擎 WorkflowCore的使用(九)——流程数据类的局限性

流程相关的数据类和流程步骤中的属性在理论上是没有限制的,我们可以使用复杂的数据类型,比如Dictionary<string,string>或者具有复杂层次的数据类,但在研究中我们发现由于JSON DSL定义的限制,我们无法实现复杂数据结构的数据传递。使用Fluent API定义的流程中,可以使用Lamdba 表达式,但在JSON DSL中没找到更好的方法。

下面的代码展示通过Lamdba表达式实现两个Dictionary<string,string>之间的数据传递,但在DSL中没有对应的方式:

                    .Output((step, data)=> {
                        var dic = step.EventData as Dictionary<string, object>;
                        foreach (var key in dic.Keys)
                        {
                            if (data.MyDic.ContainsKey(key)) data.MyDic[key] = dic[key];
                            else data.MyDic.Add(key, dic[key]);
                        }

而在实际应用中,我们需要使用流程定义文件而不是写死的代码来定义流程,这样在流程修改时,就不需要修改代码和重新编译部署。这个限制是WorkflowCore在实际项目中落地的一个主要障碍。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容