Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }