搭建自己的WF程序时碰到这样的错误:无法为实例 ID“b6badb4d-5955-4d2c-8e10-bf51fb0c6f56”传递接口类型“Land.Workflow.LocalService.ICaseService”上的事件“Create”。
搜了下,基本上都是这样的说法:把WaitForIdle 属性设置为true即可,如:args.WaitForIdle = true; 照做还是不行。
通过仔细研究发现,我们的一般会这样自定义自己的消息类型:
[Serializable] public class CaseEventArgs : ExternalDataEventArgs { public CaseEventArgs(Guid instanceId) : base(instanceId) { } public CaseEventArgs(Guid instanceId, Case _case) : base(instanceId) { this.Case = _case; } public Case Case { get; set; } }public class Case
{ }CaseEventArgs 的[Serializable]是必须加的,这地球人都知道。 但是Case如果不加[Serializable]属性同样会出现无法传递事件错误。改成这样即可:[Serializable]public class Case { ... }
也就是CaseEventArgs中属性设涉及到的实体,必须都可序列化,因为其本身可序列化。