public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { WfDynamicResourceDescriptor dynResourceDesp = (WfDynamicResourceDescriptor)obj; IDictionary <string, object> dictionary = base.Serialize(obj, serializer); dictionary.Add("Name", dynResourceDesp.Name); dictionary.Add("Condition", dynResourceDesp.Condition); return(dictionary); }
public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { WfDynamicResourceDescriptor dynResourceDesp = (WfDynamicResourceDescriptor)base.Deserialize(dictionary, type, serializer); dynResourceDesp.Name = DictionaryHelper.GetValue(dictionary, "Name", string.Empty); WfConditionDescriptor condition = JSONSerializerExecute.Deserialize <WfConditionDescriptor>(dictionary["Condition"]); dynResourceDesp.Condition = condition; return(dynResourceDesp); }
public override void ClientToServer(WfClientResourceDescriptor client, ref WfResourceDescriptor server) { client.NullCheck("client"); WfClientDynamicResourceDescriptor clientDynRes = (WfClientDynamicResourceDescriptor)client; if (server == null) server = new WfDynamicResourceDescriptor(clientDynRes.Name, clientDynRes.Condition.Expression); else { WfDynamicResourceDescriptor serverDynRes = (WfDynamicResourceDescriptor)server; serverDynRes.Name = clientDynRes.Name; serverDynRes.Condition.Expression = clientDynRes.Condition.Expression; } }
/// <summary> /// 创建带分支流程的模版。为了测试XElement序列化,里面需要包含角色、资源、条件等内容 /// </summary> /// <returns></returns> public static IWfProcessDescriptor CreateProcessDescriptorForXElementSerialization() { IWfProcessDescriptor processDesp = CreateSimpleProcessDescriptorWithBranchTemplate(); IWfActivityDescriptor normalActivity = processDesp.Activities["NormalActivity"]; string roleDesp = RolesDefineConfig.GetConfig().RolesDefineCollection["testRole"].Roles; OguRole role = new OguRole(roleDesp); WfRoleResourceDescriptor roleResource = new WfRoleResourceDescriptor(role); normalActivity.EnterEventReceivers.Add(roleResource); WfDynamicResourceDescriptor dynResource = new WfDynamicResourceDescriptor(); dynResource.Condition.Expression = "Leader"; normalActivity.LeaveEventReceivers.Add(dynResource); processDesp.CancelEventReceivers.Add(dynResource); WfRelativeLinkDescriptor relLink = new WfRelativeLinkDescriptor("TestUrl"); relLink.Category = "Test"; relLink.Url = "http://localhost/www.baidu.com"; processDesp.RelativeLinks.Add(relLink); return processDesp; }
public void WfEmptyUserDynamicResourceDescriptorTest() { WfRuntime.ProcessContext.EvaluateDynamicResourceCondition += new Expression.CalculateUserFunction(ProcessContext_EvaluateDynamicResourceCondition); WfResourceDescriptorCollection resources = new WfResourceDescriptorCollection(); WfDynamicResourceDescriptor resource = new WfDynamicResourceDescriptor(); resource.Condition.Expression = "EmptyUser"; resources.Add(resource); OguDataCollection<IUser> users = resources.ToUsers(); Assert.AreEqual(0, users.Count); }
public void WfDynamicResourceDescriptorTest() { WfRuntime.ProcessContext.EvaluateDynamicResourceCondition += new Expression.CalculateUserFunction(ProcessContext_EvaluateDynamicResourceCondition); WfResourceDescriptorCollection resources = new WfResourceDescriptorCollection(); WfDynamicResourceDescriptor resource = new WfDynamicResourceDescriptor(); resource.Condition.Expression = "Requestor"; resources.Add(resource); OguDataCollection<IUser> users = resources.ToUsers(); users.ForEach(u => Console.WriteLine(u.DisplayName)); }