Exemple #1
0
        private static JobBase CreateInvokeServiceJob()
        {
            InvokeWebServiceJob job = new InvokeWebServiceJob();

            job.JobID = UuidHelper.NewUuidString();

            job.Name                 = "即时服务调用";
            job.SvcOperationDefs     = new WfServiceOperationDefinitionCollection();
            job.LastStartExecuteTime = DateTime.Now.AddMinutes(-5);
            job.Category             = "单元测试";

            WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post,
                                                                                null,
                                                                                "http://localhost/MCSWebApp/PermissionCenterServices/Services/PermissionCenterToADService.asmx");

            WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

            parameters.Add(new WfServiceOperationParameter()
            {
                Name = "callerID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "callerID"
            });

            WfServiceOperationDefinition serviceDef = new WfServiceOperationDefinition(address, "GetVersion", parameters, string.Empty);

            serviceDef.RtnXmlStoreParamName = "Version";
            serviceDef.Timeout = TimeSpan.FromSeconds(30);
            job.SvcOperationDefs.Add(serviceDef);

            return(job);
        }
		protected void Page_Load(object sender, EventArgs e)
		{
			WfConverterHelper.RegisterConverters();

			WfServiceOperationDefinition svcOpDef = new WfServiceOperationDefinition();
			hiddenSvcOperationTemplate.Value = JSONSerializerExecute.Serialize(svcOpDef);

			var dataTypeList = EnumItemDescriptionAttribute.GetDescriptionList(typeof(WfSvcOperationParameterType));
			dataTypeDropDownList.DataSource = dataTypeList;
			dataTypeDropDownList.DataTextField = "Name";

			dataTypeDropDownList.DataValueField = "EnumValue";
			dataTypeDropDownList.DataBind();

			if (Request["hasRtn"] == "false")
			{
				this.trRtn.Style["display"] = "none";
			}

			if (!string.IsNullOrEmpty(Request["initPara"]))
			{
				var initData = new WfServiceOperationParameterCollection();
				initData.Add(new WfServiceOperationParameter()
				{
					Name = Request["initPara"],
					Type = WfSvcOperationParameterType.RuntimeParameter,
					Value = ""
				});
				detailGrid.InitialData = initData;
			}
		}
        protected void Page_Load(object sender, EventArgs e)
        {
            WfConverterHelper.RegisterConverters();

            WfServiceOperationDefinition svcOpDef = new WfServiceOperationDefinition();

            hiddenSvcOperationTemplate.Value = JSONSerializerExecute.Serialize(svcOpDef);

            var dataTypeList = EnumItemDescriptionAttribute.GetDescriptionList(typeof(WfSvcOperationParameterType));

            dataTypeDropDownList.DataSource    = dataTypeList;
            dataTypeDropDownList.DataTextField = "Name";

            dataTypeDropDownList.DataValueField = "EnumValue";
            dataTypeDropDownList.DataBind();

            if (Request["hasRtn"] == "false")
            {
                this.trRtn.Style["display"] = "none";
            }

            if (!string.IsNullOrEmpty(Request["initPara"]))
            {
                var initData = new WfServiceOperationParameterCollection();
                initData.Add(new WfServiceOperationParameter()
                {
                    Name  = Request["initPara"],
                    Type  = WfSvcOperationParameterType.RuntimeParameter,
                    Value = ""
                });
                detailGrid.InitialData = initData;
            }
        }
Exemple #4
0
        private WfServiceOperationDefinition GetWfServiceOperationDefinition(string functionName, string servicAddressKey)
        {
            WfServiceAddressDefinition serviceAddressDef = WfGlobalParameters.Default.ServiceAddressDefs[servicAddressKey];
            string addressUri = GetWsdlUrl(serviceAddressDef.Address);

            WebClient wc = new WebClient();

            using (Stream stream = wc.OpenRead(addressUri))
            {
                ServiceDescription sd            = ServiceDescription.Read(stream);
                Binding            targetBinding = GetBinding(sd, serviceAddressDef.RequestMethod);

                if (targetBinding == null && serviceAddressDef.RequestMethod == WfServiceRequestMethod.Post)
                {
                    targetBinding = GetPostableBinding(sd);
                }

                if (targetBinding == null)
                {
                    throw new NotImplementedException("服务不支持此种操作类型" + serviceAddressDef.RequestMethod.ToString());
                }

                Operation operation = GetOperation(sd, targetBinding, functionName);

                WfServiceOperationParameterCollection reqParameters = GetOperationParams(sd, operation);

                WfServiceOperationDefinition operationDef =
                    new WfServiceOperationDefinition(serviceAddressDef.Key, functionName, reqParameters, string.Empty);

                return(operationDef);
            }
        }
		protected void btnSync_Click(object sender, EventArgs e)
		{
			InvokeWebServiceJob job = InvokeWebServiceJobAdapter.Instance.LoadSingleDataByJobID(jobId);
			if (job == null)
			{
				string url = ResourceUriSettings.GetConfig().Paths["pcServiceAdSync"].Uri.ToString();
				string methodName = "StartSynchronize";
				WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();
				parameters.Add(new WfServiceOperationParameter() { Name = "startPath", Type = WfSvcOperationParameterType.String, Value = "" });
				parameters.Add(new WfServiceOperationParameter() { Name = "taskID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "taskID" }); //特殊用法
				string name = "AD同步-用户发起";
				job = Util.CreateImmediateJob(jobId, name, "PC→AD", url, methodName, parameters);
				InvokeWebServiceJobAdapter.Instance.Update(job);
			}

			//检查是否有任务已经进入执行序列
			if (SysTaskAdapter.Instance.Load(w => { w.AppendItem("CATEGORY", "PC→AD"); }).Any())
			{
				BannerNotice notic = (BannerNotice)Master.FindControl("notice");
				notic.Text = ("检测到已经存在一个未执行或执行中的同步任务,请等待任务结束或者终止任务后重试。");
			}
			else
			{
				SysTask task = job.ToSysTask();
				task.Source = MCS.Library.Principal.DeluxeIdentity.CurrentUser;
				task.Url = this.ResolveUrl("~/lists/ADLog.aspx?id=" + task.TaskID);

				SysTaskAdapter.Instance.Update(task);
			}
		}
        protected void btnSync_Click(object sender, EventArgs e)
        {
            InvokeWebServiceJob job = InvokeWebServiceJobAdapter.Instance.LoadSingleDataByJobID(JobID);

            if (job == null)
            {
                string url        = ResourceUriSettings.GetConfig().Paths["pcServiceAdSync"].Uri.ToString();
                string methodName = "StartADReverseSynchronize";
                WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();
                parameters.Add(new WfServiceOperationParameter()
                {
                    Name = "taskID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "taskID"
                });                                                                                                                                                           //特殊用法
                string name = "AD逆同步-用户发起";

                job = Util.CreateImmediateJob(JobID, name, "AD→PC", url, methodName, parameters);
                InvokeWebServiceJobAdapter.Instance.Update(job);
            }

            //检查是否有任务已经进入执行序列
            if (SysTaskAdapter.Instance.Load(w => { w.AppendItem("CATEGORY", "AD→PC"); }).Any())
            {
                BannerNotice notic = (BannerNotice)Master.FindControl("notice");
                notic.Text = ("检测到已经存在一个未执行或执行中的同步任务,请等待任务结束或者终止任务后重试。");
            }
            else
            {
                SysTask task = job.ToSysTask();
                task.Url    = this.ResolveUrl("~/lists/ADReverseLog.aspx?id=" + task.TaskID);
                task.Source = MCS.Library.Principal.DeluxeIdentity.CurrentUser;
                SysTaskAdapter.Instance.Update(task);
            }
        }
		public virtual void DoModifyFileOperations(string rootPath, MaterialFileOeprationInfo fileOperation, MaterialContent content)
		{
			var task = new InvokeServiceTask()
			{
				TaskID = UuidHelper.NewUuidString(),
				TaskTitle = string.Format(this.taskTitleTemplate, fileOperation.Material.OriginalName, fileOperation.Material.ID),
			};

			var parameters = new WfServiceOperationParameterCollection
			{
				new WfServiceOperationParameter("rootPath", rootPath),
				new WfServiceOperationParameter("fileOperation", fileOperation.Operation.ToString()),
				new WfServiceOperationParameter("materialConnectionName",
					DbConnectionMappingContext.GetMappedConnectionName(MaterialAdapter.Instance.GetConnectionName())),
				new WfServiceOperationParameter("contentConnectionName",
					DbConnectionMappingContext.GetMappedConnectionName(MaterialContentAdapter.Instance.ConnectionName)),
				new WfServiceOperationParameter("materialId", fileOperation.Material.ID),
				new WfServiceOperationParameter("url", fileOperation.Material.ShowFileUrl)
			};


			task.SvcOperationDefs.Add(new WfServiceOperationDefinition(
					new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, ResourceUriSettings.GetConfig().Paths[this.resourceUri].Uri.ToString()),
						"DoFileToDocService", parameters, "ReturnValue")
					);

			DbConnectionMappingContext.DoMappingAction(
				DbConnectionMappingContext.GetMappedConnectionName(InvokeServiceTaskAdapter.Instance.ConnectionName),
				InvokeServiceTaskAdapter.Instance.ConnectionName,
				() =>
				{
					InvokeServiceTaskAdapter.Instance.Update(task);
				});
		}
        public virtual void DoModifyFileOperations(string rootPath, MaterialFileOeprationInfo fileOperation, MaterialContent content)
        {
            var task = new InvokeServiceTask()
            {
                TaskID    = UuidHelper.NewUuidString(),
                TaskTitle = string.Format(this.taskTitleTemplate, fileOperation.Material.OriginalName, fileOperation.Material.ID),
            };

            var parameters = new WfServiceOperationParameterCollection
            {
                new WfServiceOperationParameter("rootPath", rootPath),
                new WfServiceOperationParameter("fileOperation", fileOperation.Operation.ToString()),
                new WfServiceOperationParameter("materialConnectionName",
                                                DbConnectionMappingContext.GetMappedConnectionName(MaterialAdapter.Instance.GetConnectionName())),
                new WfServiceOperationParameter("contentConnectionName",
                                                DbConnectionMappingContext.GetMappedConnectionName(MaterialContentAdapter.Instance.ConnectionName)),
                new WfServiceOperationParameter("materialId", fileOperation.Material.ID),
                new WfServiceOperationParameter("url", fileOperation.Material.ShowFileUrl)
            };


            task.SvcOperationDefs.Add(new WfServiceOperationDefinition(
                                          new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, ResourceUriSettings.GetConfig().Paths[this.resourceUri].Uri.ToString()),
                                          "DoFileToDocService", parameters, "ReturnValue")
                                      );

            DbConnectionMappingContext.DoMappingAction(
                DbConnectionMappingContext.GetMappedConnectionName(InvokeServiceTaskAdapter.Instance.ConnectionName),
                InvokeServiceTaskAdapter.Instance.ConnectionName,
                () =>
            {
                InvokeServiceTaskAdapter.Instance.Update(task);
            });
        }
 private static void ExtractSoapParameters(WfServiceOperationParameterCollection rst, ServiceDescription desc, Message msg)
 {
     if (msg.Parts["parameters"] != null)
     {
         var ppsElemName = msg.Parts["parameters"].Element;
         var schema      = desc.Types.Schemas[ppsElemName.Namespace];
         System.Xml.Schema.XmlSchemaElement     innerTypes = (System.Xml.Schema.XmlSchemaElement)schema.Elements[ppsElemName];
         System.Xml.Schema.XmlSchemaComplexType xType      = innerTypes.SchemaType as System.Xml.Schema.XmlSchemaComplexType;
         if (xType != null)
         {
             System.Xml.Schema.XmlSchemaSequence xSeq = xType.Particle as System.Xml.Schema.XmlSchemaSequence;
             if (xSeq != null)
             {
                 foreach (var xItem in xSeq.Items)
                 {
                     if (xItem is System.Xml.Schema.XmlSchemaElement)
                     {
                         System.Xml.Schema.XmlSchemaElement xElem = xItem as System.Xml.Schema.XmlSchemaElement;
                         rst.Add(new WfServiceOperationParameter()
                         {
                             Name = xElem.Name, Type = SolveType(xElem.SchemaTypeName)
                         });
                     }
                 }
             }
         }
     }
 }
Exemple #10
0
        private WfServiceOperationParameterCollection GetOperationParams(ServiceDescription sd, Operation operation)
        {
            WfServiceOperationParameterCollection result = new WfServiceOperationParameterCollection();

            if (operation == null)
            {
                return(result);
            }

            foreach (OperationMessage opMessage in operation.Messages)
            {
                if (opMessage is OperationInput)
                {
                    Message message = sd.Messages[opMessage.Message.Name];
                    foreach (MessagePart part in message.Parts)
                    {
                        if (!string.IsNullOrEmpty(part.Type.Name))
                        {
                            result.Add(new WfServiceOperationParameter()
                            {
                                Name = part.Name, Type = WfSvcOperationParameterType.String
                            });
                            continue;
                        }

                        if (!string.IsNullOrEmpty(part.Element.Name))
                        {
                            XmlSchemaElement element = GetSchemaElement(sd, part.Element.Name);
                            if (element == null)
                            {
                                continue;
                            }
                            if (element.ElementSchemaType is XmlSchemaComplexType)
                            {
                                List <XmlSchemaElement> members = GetComplexElementMember(element);
                                members.ForEach(p =>
                                {
                                    result.Add(new WfServiceOperationParameter()
                                    {
                                        Name = p.Name, Type = MappingWsdlType(p.ElementSchemaType.TypeCode)
                                    });
                                });
                            }
                            else
                            {
                                result.Add(new WfServiceOperationParameter()
                                {
                                    Name = element.Name, Type = MappingWsdlType(element.ElementSchemaType.TypeCode)
                                });
                            }
                        }
                    }
                }
            }

            return(result);
        }
		protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
		{
			WfServiceOperationParameter ownerActivityIDParam = new WfServiceOperationParameter("ownerActivityID", this.OwnerActivityID);

			parameters.Add(ownerActivityIDParam);

			WfServiceOperationParameter transferParams = new WfServiceOperationParameter("branchTransferParams", WfSvcOperationParameterType.RuntimeParameter, "transferParams");

			parameters.Add(transferParams);
		}
        protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
        {
            WfServiceOperationParameter ownerActivityIDParam = new WfServiceOperationParameter("ownerActivityID", this.OwnerActivityID);

            parameters.Add(ownerActivityIDParam);

            WfServiceOperationParameter transferParams = new WfServiceOperationParameter("branchTransferParams", WfSvcOperationParameterType.RuntimeParameter, "transferParams");

            parameters.Add(transferParams);
        }
        protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
        {
            WfServiceOperationParameter processIDParam = new WfServiceOperationParameter("processID", this.ProcessID);

            parameters.Add(processIDParam);

            WfServiceOperationParameter processPendingActivityParam = new WfServiceOperationParameter("processPendingActivity",
                                                                                                      WfSvcOperationParameterType.Boolean, this.ProcessPendingActivity);

            parameters.Add(processPendingActivityParam);
        }
Exemple #14
0
        protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
        {
            WfServiceOperationParameter processIDParam = new WfServiceOperationParameter("processID", this.ProcessID);

            parameters.Add(processIDParam);

            WfServiceOperationParameter cancelAllBranchProcessesParam = new WfServiceOperationParameter("cancelAllBranchProcesses",
                                                                                                        WfSvcOperationParameterType.Boolean, this.CancelAllBranchProcesses);

            parameters.Add(cancelAllBranchProcessesParam);
        }
		protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
		{
			WfServiceOperationParameter processIDParam = new WfServiceOperationParameter("processID", this.ProcessID);

			parameters.Add(processIDParam);

			WfServiceOperationParameter cancelAllBranchProcessesParam = new WfServiceOperationParameter("cancelAllBranchProcesses",
				WfSvcOperationParameterType.Boolean, this.CancelAllBranchProcesses);

			parameters.Add(cancelAllBranchProcessesParam);
		}
Exemple #16
0
 public WfServiceInvokerFactory()
 {
     Url        = @"http://localhost/MCSWebApp/WebTestProject/Services/ProcessTestService.asmx";
     ParaList   = new WfServiceOperationParameterCollection();
     Credential = new WfNetworkCredential();
     AddressDef = new WfServiceAddressDefinition(WfServiceRequestMethod.Get,
                                                 Credential, Url);
     AddressDef.Key = Guid.NewGuid().ToString();
     WfGlobalParameters.Default.ServiceAddressDefs.Add(AddressDef);
     AddressDef.ServiceNS = @"http://tempuri.org/";
     SvcOpDef             = new WfServiceOperationDefinition(AddressDef.Key, Operation, ParaList, "");
 }
		public WfServiceInvokerFactory()
		{
			Url = @"http://localhost/MCSWebApp/WebTestProject/Services/ProcessTestService.asmx";
			ParaList = new WfServiceOperationParameterCollection();
			Credential = new WfNetworkCredential();
			AddressDef = new WfServiceAddressDefinition(WfServiceRequestMethod.Get,
				Credential, Url);
			AddressDef.Key = Guid.NewGuid().ToString();
			WfGlobalParameters.Default.ServiceAddressDefs.Add(AddressDef);
			AddressDef.ServiceNS = @"http://tempuri.org/";
			SvcOpDef = new WfServiceOperationDefinition(AddressDef.Key, Operation, ParaList, "");
		}
		protected virtual void InitServiceDefinitions()
		{
			WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post, string.Empty, WfServiceContentType.Json);
			this.PrepareAddress(address);

			WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

			WfServiceOperationDefinition definition = new WfServiceOperationDefinition(address, this.GetOperationName(), parameters, "returnValue");

			this.PrepareParameters(parameters);

			this.SvcOperationDefs.Add(definition);
		}
        public static void AreEqual(this WfServiceOperationParameterCollection actual, WfServiceOperationParameterConfigurationElementCollection element)
        {
            Assert.AreEqual(actual.Count, element.Count);

            foreach (WfServiceOperationParameter itemActual in actual)
            {
                WfServiceOperationParameterConfigurationElement itemElement = element[itemActual.Name];

                Assert.IsNotNull(itemElement);

                itemActual.AreEqual(itemElement);
            }
        }
		protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
		{
			WfServiceOperationParameter ownerActivityIDParam = new WfServiceOperationParameter("ownerActivityID", this.OwnerActivityID);

			parameters.Add(ownerActivityIDParam);

			WfServiceOperationParameter transferParams = new WfServiceOperationParameter("template", WfSvcOperationParameterType.RuntimeParameter, "template");

			parameters.Add(transferParams);

			WfServiceOperationParameter autoAddExitMaintainingStatusTaskParam = new WfServiceOperationParameter("autoAddExitMaintainingStatusTask", WfSvcOperationParameterType.Boolean, this.AutoAddExitMaintainingStatusTask);

			parameters.Add(autoAddExitMaintainingStatusTaskParam);
		}
        protected virtual void InitServiceDefinitions()
        {
            WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post, string.Empty, WfServiceContentType.Json);

            this.PrepareAddress(address);

            WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

            WfServiceOperationDefinition definition = new WfServiceOperationDefinition(address, this.GetOperationName(), parameters, "returnValue");

            this.PrepareParameters(parameters);

            this.SvcOperationDefs.Add(definition);
        }
        protected override void PrepareParameters(WfServiceOperationParameterCollection parameters)
        {
            WfServiceOperationParameter ownerActivityIDParam = new WfServiceOperationParameter("ownerActivityID", this.OwnerActivityID);

            parameters.Add(ownerActivityIDParam);

            WfServiceOperationParameter transferParams = new WfServiceOperationParameter("template", WfSvcOperationParameterType.RuntimeParameter, "template");

            parameters.Add(transferParams);

            WfServiceOperationParameter autoAddExitMaintainingStatusTaskParam = new WfServiceOperationParameter("autoAddExitMaintainingStatusTask", WfSvcOperationParameterType.Boolean, this.AutoAddExitMaintainingStatusTask);

            parameters.Add(autoAddExitMaintainingStatusTaskParam);
        }
        public void InvokeServiceTaskTest()
        {
            //准备Job信息
            //调用SysTaskSettings.GetSettings().GetExecutor("InvokeService")执行服务
            //检验状态

            InvokeWebServiceJob job = new InvokeWebServiceJob()
            {
                JobID            = UuidHelper.NewUuidString(),
                JobType          = JobType.InvokeService,
                Category         = "测试权限中心服务",
                Description      = "仅用于测试",
                Enabled          = true,
                Name             = "任务和作业的单元测试",
                SvcOperationDefs = new Workflow.WfServiceOperationDefinitionCollection()
            };

            WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

            parameters.Add(new WfServiceOperationParameter()
            {
                Name = "callerID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "callerID"
            });

            job.SvcOperationDefs.Add(new Workflow.WfServiceOperationDefinition(new Workflow.WfServiceAddressDefinition(Workflow.WfServiceRequestMethod.Post, null,
                                                                                                                       "http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx"), "GetVersion", parameters, string.Empty));
            InvokeWebServiceJobAdapter.Instance.Update(job);

            DO.SysTask task = new DO.SysTask()
            {
                TaskID     = UuidHelper.NewUuidString(),
                TaskTitle  = "测试任务",
                ResourceID = job.JobID
            };

            SysTaskAdapter.Instance.Update(task);

            ISysTaskExecutor executor = SysTaskSettings.GetSettings().GetExecutor("InvokeService");

            executor.Execute(task);

            var task2 = SysTaskAdapter.Instance.Load(task.TaskID);

            Assert.IsNull(task2);
        }
		public void InvokeServiceTaskTest()
		{
			//准备Job信息
			//调用SysTaskSettings.GetSettings().GetExecutor("InvokeService")执行服务
			//检验状态

			InvokeWebServiceJob job = new InvokeWebServiceJob()
			{
				JobID = UuidHelper.NewUuidString(),
				JobType = JobType.InvokeService,
				Category = "测试权限中心服务",
				Description = "仅用于测试",
				Enabled = true,
				Name = "任务和作业的单元测试",
				SvcOperationDefs = new Workflow.WfServiceOperationDefinitionCollection()
			};

			WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

			parameters.Add(new WfServiceOperationParameter() { Name = "callerID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "callerID" });

			job.SvcOperationDefs.Add(new Workflow.WfServiceOperationDefinition(new Workflow.WfServiceAddressDefinition(Workflow.WfServiceRequestMethod.Post, null,
				"http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx"), "GetVersion", parameters, string.Empty));
			InvokeWebServiceJobAdapter.Instance.Update(job);

			DO.SysTask task = new DO.SysTask()
			{
				TaskID = UuidHelper.NewUuidString(),
				TaskTitle = "测试任务",
				ResourceID = job.JobID
			};

			SysTaskAdapter.Instance.Update(task);

			ISysTaskExecutor executor = SysTaskSettings.GetSettings().GetExecutor("InvokeService");

			executor.Execute(task);

			var task2 = SysTaskAdapter.Instance.Load(task.TaskID);

			Assert.IsNull(task2);
		}
		private static InvokeServiceTask PrepareTask()
		{
			string url = "http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx";

			DO.InvokeServiceTask task = new DO.InvokeServiceTask()
			{
				TaskID = UuidHelper.NewUuidString(),
				TaskTitle = "新任务",
			};

			WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

			parameters.Add(new WfServiceOperationParameter("callerID", "InvokeServiceTaskPersistTest"));

			task.SvcOperationDefs.Add(new Workflow.WfServiceOperationDefinition(
					new Workflow.WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url),
						"GetVersion", parameters, "ReturnValue")
				);

			return task;
		}
Exemple #26
0
        /// <summary>
        /// 准备一个带错误的任务
        /// </summary>
        /// <returns></returns>
        private static InvokeServiceTask PrepareErrorInvokeServiceTask()
        {
            string url = "http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx-error";

            InvokeServiceTask task = new InvokeServiceTask()
            {
                TaskID    = UuidHelper.NewUuidString(),
                TaskTitle = "新任务",
            };

            WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

            parameters.Add(new WfServiceOperationParameter("callerID", "InvokeServiceTaskPersistTest"));

            task.SvcOperationDefs.Add(new WfServiceOperationDefinition(
                                          new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url),
                                          "GetVersion", parameters, "ReturnValue")
                                      );

            return(task);
        }
        public static WfServiceOperationParameterCollection DiscoverParameters(string address, string httpMethod, string method)
        {
            WfServiceOperationParameterCollection rst = new WfServiceOperationParameterCollection();

            ServiceDescription desc = GetServiceDescription(address);

            var xMessage = DiscoverMethodMessage(method, httpMethod, desc);

            if (xMessage != null)
            {
                var msg = desc.Messages[xMessage.Name];
                if (httpMethod == "Soap")
                {
                    ExtractSoapParameters(rst, desc, msg);
                }
                else
                {
                    foreach (MessagePart pt in msg.Parts)
                    {
                        rst.Add(new WfServiceOperationParameter()
                        {
                            Name = pt.Name, Type = SolveType(pt.Type)
                        });
                    }
                }
            }
            else if (httpMethod != "Soap")
            {
                //尝试作为SOAP处理
                xMessage = DiscoverMethodMessage(method, "Soap", desc);
                if (xMessage != null)
                {
                    var msg = desc.Messages[xMessage.Name];
                    ExtractSoapParameters(rst, desc, msg);
                }
            }

            return(rst);
        }
		public static WfServiceOperationParameterCollection DiscoverParameters(string address, string httpMethod, string method)
		{
			WfServiceOperationParameterCollection rst = new WfServiceOperationParameterCollection();

			ServiceDescription desc = GetServiceDescription(address);

			var xMessage = DiscoverMethodMessage(method, httpMethod, desc);
			if (xMessage != null)
			{
				var msg = desc.Messages[xMessage.Name];
				if (httpMethod == "Soap")
				{
					ExtractSoapParameters(rst, desc, msg);
				}
				else
				{
					foreach (MessagePart pt in msg.Parts)
					{
						rst.Add(new WfServiceOperationParameter() { Name = pt.Name, Type = SolveType(pt.Type) });
					}
				}
			}
			else if (httpMethod != "Soap")
			{
				//尝试作为SOAP处理
				xMessage = DiscoverMethodMessage(method, "Soap", desc);
				if (xMessage != null)
				{
					var msg = desc.Messages[xMessage.Name];
					ExtractSoapParameters(rst, desc, msg);

				}
			}

			return rst;
		}
		protected virtual void PrepareParameters(WfServiceOperationParameterCollection parameters)
		{
		}
		private static void ExtractSoapParameters(WfServiceOperationParameterCollection rst, ServiceDescription desc, Message msg)
		{
			if (msg.Parts["parameters"] != null)
			{
				var ppsElemName = msg.Parts["parameters"].Element;
				var schema = desc.Types.Schemas[ppsElemName.Namespace];
				System.Xml.Schema.XmlSchemaElement innerTypes = (System.Xml.Schema.XmlSchemaElement)schema.Elements[ppsElemName];
				System.Xml.Schema.XmlSchemaComplexType xType = innerTypes.SchemaType as System.Xml.Schema.XmlSchemaComplexType;
				if (xType != null)
				{
					System.Xml.Schema.XmlSchemaSequence xSeq = xType.Particle as System.Xml.Schema.XmlSchemaSequence;
					if (xSeq != null)
					{
						foreach (var xItem in xSeq.Items)
						{
							if (xItem is System.Xml.Schema.XmlSchemaElement)
							{
								System.Xml.Schema.XmlSchemaElement xElem = xItem as System.Xml.Schema.XmlSchemaElement;
								rst.Add(new WfServiceOperationParameter() { Name = xElem.Name, Type = SolveType(xElem.SchemaTypeName) });
							}
						}
					}
				}
			}
		}
 protected virtual void PrepareParameters(WfServiceOperationParameterCollection parameters)
 {
 }
Exemple #32
0
		private static JobBase CreateInvokeServiceJob()
		{
			InvokeWebServiceJob job = new InvokeWebServiceJob();

			job.JobID = UuidHelper.NewUuidString();

			job.Name = "即时服务调用";
			job.SvcOperationDefs = new WfServiceOperationDefinitionCollection();
			job.LastStartExecuteTime = DateTime.Now.AddMinutes(-5);
			job.Category = "单元测试";

			WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post,
				null,
				"http://localhost/MCSWebApp/PermissionCenterServices/Services/PermissionCenterToADService.asmx");

			WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

			parameters.Add(new WfServiceOperationParameter() { Name = "callerID", Type = WfSvcOperationParameterType.RuntimeParameter, Value = "callerID" });

			WfServiceOperationDefinition serviceDef = new WfServiceOperationDefinition(address, "GetVersion", parameters, string.Empty);

			serviceDef.RtnXmlStoreParamName = "Version";
			serviceDef.Timeout = TimeSpan.FromSeconds(30);
			job.SvcOperationDefs.Add(serviceDef);

			return job;
		}
Exemple #33
0
        internal static InvokeWebServiceJob CreateImmediateJob(string jobID, string name, string category, string url, string methodName, WfServiceOperationParameterCollection parameters)
        {
            InvokeWebServiceJob job = new InvokeWebServiceJob();

            job.JobID = jobID;
            job.Category = category;

            job.Name = name;
            job.SvcOperationDefs = new WfServiceOperationDefinitionCollection();

            WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url);

            WfServiceOperationDefinition serviceDef = new WfServiceOperationDefinition(address, methodName, parameters, string.Empty);

            serviceDef.Timeout = TimeSpan.FromSeconds(24 * 60 * 60);
            job.SvcOperationDefs.Add(serviceDef);

            return job;
        }
        public string CreateSoapEnvelope(WfServiceOperationParameterCollection operationParams)
        {
            if (this._SvcOperationDef == null)
                throw new ArgumentNullException("WfServiceOperationDefinition不能为空!");

            if (this._SvcOperationDef.OperationName.IsNullOrEmpty())
                throw new ArgumentNullException("OperationName不能为空!");

            XNamespace methodNS = this._SvcOperationDef.AddressDef.ServiceNS;
            XElement operationElement = new XElement(methodNS + this._SvcOperationDef.OperationName);

            foreach (WfServiceOperationParameter paramDef in operationParams)
            {
                XElement paraElement = new XElement(paramDef.Name);

                if (paramDef.Type == WfSvcOperationParameterType.RuntimeParameter)
                {
                    Type dataType = paramDef.Value.GetType();		//mark 须从流程上下文取值,目前只是为了方便
                    PropertyInfo[] propsInfo = dataType.GetProperties();

                    //mark 用反射属性?还是用xml serialize?
                    foreach (PropertyInfo item in propsInfo)
                    {
                        object propVal = item.GetValue(paramDef.Value, null);

                        if (propVal == null)
                            continue;

                        paraElement.Add(new XElement(item.Name, propVal));
                    }
                }

                operationElement.Add(paraElement);
            }

            XElement envelopeElement = XElement.Parse(@"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""><soap:Body></soap:Body></soap:Envelope>");
            XElement bodyElement = (XElement)envelopeElement.FirstNode;

            bodyElement.Add(operationElement);

            XDeclaration xmlDeclare = new XDeclaration("1.0", "utf-8", "");
            XDocument doc = new XDocument(xmlDeclare, envelopeElement);

            using (StringWriter writer = new StringWriter())
            {
                doc.Save(writer);
                writer.Flush();

                //mark
                string trashStr = @" xmlns=""""";

                return writer.ToString().Replace("utf-16", "utf-8").Replace(trashStr, "");
            }
        }
Exemple #35
0
        internal static InvokeWebServiceJob CreateImmediateJob(string jobID, string name, string category, string url, string methodName, WfServiceOperationParameterCollection parameters)
        {
            InvokeWebServiceJob job = new InvokeWebServiceJob();

            job.JobID    = jobID;
            job.Category = category;

            job.Name             = name;
            job.SvcOperationDefs = new WfServiceOperationDefinitionCollection();

            WfServiceAddressDefinition address = new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url);

            WfServiceOperationDefinition serviceDef = new WfServiceOperationDefinition(address, methodName, parameters, string.Empty);

            serviceDef.Timeout = TimeSpan.FromSeconds(24 * 60 * 60);
            job.SvcOperationDefs.Add(serviceDef);

            return(job);
        }
Exemple #36
0
 internal static InvokeWebServiceJob CreateImmediateJob(string name, string category, string url, string methodName, WfServiceOperationParameterCollection parameters)
 {
     return(CreateImmediateJob(UuidHelper.NewUuidString(), name, category, url, methodName, parameters));
 }
Exemple #37
0
 internal static InvokeWebServiceJob CreateImmediateJob(string name, string category, string url, string methodName, WfServiceOperationParameterCollection parameters)
 {
     return CreateImmediateJob(UuidHelper.NewUuidString(), name, category, url, methodName, parameters);
 }