Beispiel #1
0
		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);
			}
		}
Beispiel #2
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);
        }
Beispiel #4
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);
		}
        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);
        }
        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);
        }
Beispiel #8
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;
            }
        }
 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 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;
			}
		}
Beispiel #12
0
        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);
            }
        }
		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("template", WfSvcOperationParameterType.RuntimeParameter, "template");

			parameters.Add(transferParams);

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

			parameters.Add(autoAddExitMaintainingStatusTaskParam);
		}
Beispiel #15
0
        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;
		}
Beispiel #18
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;
		}
Beispiel #21
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;
		}
		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) });
							}
						}
					}
				}
			}
		}