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); } }
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 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); }
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; } }
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); }
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; }
/// <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; }
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) }); } } } } } }