public DynamicService CreateServiceEntry() { DynamicService newDs = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><OldCategory ColumnIODirection=\"Input\"/><NewCategory ColumnIODirection=\"Input\"/><ResourceType ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ServiceAction sa = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; newDs.Actions.Add(sa); return newDs; }
public DynamicService CreateServiceEntry() { var findResourcesByIdAction = new ServiceAction { Name = HandlesType(), SourceMethod = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService }; var findResourcesByIdService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><GuidCsv ColumnIODirection=\"Input\"/><ResourceType ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; findResourcesByIdService.Actions.Add(findResourcesByIdAction); return findResourcesByIdService; }
public DynamicService CreateServiceEntry() { var getLatestAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; var getLatestService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><EditedItemsXml ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; getLatestService.Actions.Add(getLatestAction); return getLatestService; }
public DynamicService CreateServiceEntry() { DynamicService findNetworkComputersService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ServiceAction findNetworkComputersAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; findNetworkComputersService.Actions.Add(findNetworkComputersAction); return findNetworkComputersService; }
public DynamicService CreateServiceEntry() { DynamicService getScheduledResourcesService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList></DataList>") }; ServiceAction getScheduledResourcesAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceName = HandlesType(), SourceMethod = HandlesType() }; getScheduledResourcesService.Actions.Add(getScheduledResourcesAction); return getScheduledResourcesService; }
public DynamicService CreateServiceEntry() { DynamicService deployResourceDynamicService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><ResourceDefinition ColumnIODirection=\"Input\"/><Roles ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ServiceAction deployResourceServiceAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; deployResourceDynamicService.Actions.Add(deployResourceServiceAction); return deployResourceDynamicService; }
public DynamicService CreateServiceEntry() { var findServices = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><itemToAdd ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; var fetchItemsAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; findServices.Actions.Add(fetchItemsAction); return findServices; }
public DynamicService CreateServiceEntry() { DynamicService newDs = new DynamicService(); newDs.Name = HandlesType(); newDs.DataListSpecification = "<DataList><Roles/><ResourceXml/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>"; ServiceAction sa = new ServiceAction(); sa.Name = HandlesType(); sa.ActionType = enActionType.InvokeManagementDynamicService; sa.SourceMethod = HandlesType(); newDs.Actions.Add(sa); return newDs; }
public ManagementServiceResource(DynamicService service) { if(service == null) { throw new ArgumentNullException("service"); } Service = service; ResourceID = service.ID == Guid.Empty ? Guid.NewGuid() : service.ID; ResourceName = service.Name; ResourceType = ResourceType.ReservedService; ResourcePath = service.Name; DataList = service.DataListSpecification; }
public DynamicService CreateServiceEntry() { DynamicService ds = new DynamicService {Name = HandlesType()}; ServiceAction action = new ServiceAction { Name = HandlesType(), SourceMethod = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, DataListSpecification = new StringBuilder("<DataList><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ds.Actions.Add(action); return ds; }
public DynamicService CreateServiceEntry() { var dynamicService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><LoggingSettings ColumnIODirection=\"Input\"></LoggingSettings><Result/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; var serviceAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; dynamicService.Actions.Add(serviceAction); return dynamicService; }
public DynamicService CreateServiceEntry() { DynamicService pluginMetaDataService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><AssemblyLocation ColumnIODirection=\"Input\"/><ProtectionLevel ColumnIODirection=\"Input\"/><NameSpace ColumnIODirection=\"Input\"/><MethodName ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ServiceAction pluginMetaDataAction = new ServiceAction { Name = HandlesType(), SourceMethod = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService }; pluginMetaDataService.Actions.Add(pluginMetaDataAction); return pluginMetaDataService; }
public DynamicService CreateServiceEntry() { var checkPermissionsService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><FilePath ColumnIODirection=\"Input\"><Username ColumnIODirection=\"Input\"/><Password ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; var checkPermissionsServiceAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; checkPermissionsService.Actions.Add(checkPermissionsServiceAction); return checkPermissionsService; }
public Guid Invoke(DynamicService service, dynamic xmlRequest, Guid dataListId, out ErrorResultTO errors) { //dynamic result = new UnlimitedObject(); //dynamic forwardResult = new UnlimitedObject(); var allErrors = new ErrorResultTO(); errors = new ErrorResultTO(); if(service == null) { allErrors.AddError("Dynamic Service not found exception"); return GlobalConstants.NullDataListID; } string dataList = service.DataListSpecification; // PBI : 5376 Amendedment for DataList Server Guid result = GlobalConstants.NullDataListID; string data = xmlRequest.XmlString.Trim(); byte[] incomingData = Encoding.UTF8.GetBytes(data); Guid serviceDataId; var performDataListInMerge = false; if(dataList != string.Empty) { serviceDataId = SvrCompiler.ConvertTo(null, DataListFormat.CreateFormat(GlobalConstants._XML), incomingData, dataList, out errors); errors = new ErrorResultTO(); // re-set to avoid carring // PBI : 5376 // If dataListID == NullID, create a new list and set it as the current ID // Else, create a new list, union the old data into the new and continue on ;) if(dataListId != GlobalConstants.NullDataListID) { serviceDataId = SvrCompiler.Merge(null, serviceDataId, dataListId, enDataListMergeTypes.Union, enTranslationDepth.Data, false, out errors); } else { performDataListInMerge = true; } } else { serviceDataId = SvrCompiler.CloneDataList(dataListId, out errors); performDataListInMerge = true; } if (errors.HasErrors()) { allErrors.MergeErrors(errors); } IDSFDataObject dataObject = new DsfDataObject(xmlRequest.XmlString, serviceDataId); dataObject.DataList = dataList; if(performDataListInMerge) { SvrCompiler.ConditionalMerge(null, DataListMergeFrequency.Always, serviceDataId, dataObject.DatalistInMergeID, DataListMergeFrequency.Always, dataObject.DatalistInMergeType, dataObject.DatalistInMergeDepth); } // TODO : Reset the AmbientDataList to this ID? // Fetch data for Input binding... DataListTranslatedPayloadTO tmpData = null; dynamic inputBinding = null; // End PBI Amendments foreach(ServiceAction serviceAction in service.Actions) { //TraceWriter.WriteTrace(_managementChannel, string.Format("Validating the inputs of Service '{0}'", service.Name), Resources.TraceMessageType_Message); foreach(ServiceActionInput sai in serviceAction.ServiceActionInputs) { //Assigning the input the value from the callers request data //TraceWriter.WriteTrace(_managementChannel, string.Format("Discovered input '{0}'", sai.Name), Resources.TraceMessageType_Message); if(sai.CascadeSource) { TraceWriter.WriteTrace(_managementChannel, string.Format("Input '{0}' is cascaded", sai.Name), Resources.TraceMessageType_Message); //This is a cascaded input so retrieve the value from the //previous actions response //sai.Value = forwardResult.GetValue(sai.Name); } else { if(tmpData == null) { tmpData = SvrCompiler.ConvertFrom(null, serviceDataId, enTranslationDepth.Data, DataListFormat.CreateFormat(GlobalConstants._XML), out errors); if(!DataListUtil.isNullADL(tmpData.FetchAsString())) { inputBinding = new UnlimitedObject(tmpData.FetchAsString()); } else { // Empty data, try the incoming stream?! inputBinding = new UnlimitedObject(xmlRequest.XmlString); } } // 16.10.2012 : Travis.Frisinger - EmptyToNull amendments string tmpVal = inputBinding.GetValue(sai.Name); if(sai.EmptyToNull && tmpVal == string.Empty) { tmpVal = AppServerStrings.NullConstant; } sai.Value = tmpVal; } //TraceWriter.WriteTrace(string.Format("Assigning value {0} to input '{1}'", sai.Value.ToString(), sai.Name)); //Validating inputs if there is validation set up in the service definition if(sai.IsRequired && string.IsNullOrEmpty(sai.DefaultValue)) { if(!sai.Validate()) { allErrors.AddError(string.Format("Validation Failure. Argument '{0}' failed validation.", sai.Name)); //TraceWriter.WriteTrace(_managementChannel, string.Format("Argument '{0}' failed validation", sai.Name), Resources.TraceMessageType_Message); //xmlRequest.Error = string.Format("Validation Failure. Argument '{0}' failed validation.", sai.Name); //return xmlRequest; } } //This input does not have any value in the callers request //so we are setting the input value to the full request if(string.IsNullOrEmpty(sai.Value.ToString())) { sai.Value = !string.IsNullOrEmpty(sai.DefaultValue) ? sai.DefaultValue : string.Empty; } } //if (service.Mode == enDynamicServiceMode.ValidationOnly) //{ // xmlRequest.ValidationOnly.Result = true; // return xmlRequest; //} if(serviceAction.ActionType == enActionType.Switch) { if(!string.IsNullOrEmpty(serviceAction.Cases.DataElementName)) { ////Assigning the input the value from the callers request data //if (serviceAction.Cases.CascadeSource) //{ //This is a cascaded input so retrieve the value from the //previous actions response //sai.Value = actionResponse.GetValue(sai.Name); //serviceAction.Cases.DataElementValue = forwardResult.GetValue(serviceAction.Cases.DataElementName); //} //else //{ serviceAction.Cases.DataElementValue = xmlRequest.GetValue(serviceAction.Cases.DataElementName); //} } } // //Juries - This is a dirty hack, naughty naughty. //Hijacked current functionality to enable erros to be added to an item after its already been added to the tree // if(allErrors.HasErrors()) { DebugDispatcher.Instance.Write(new DebugState() { ParentID = dataObject.ParentInstanceID, WorkspaceID = dataObject.WorkspaceID, StartTime = DateTime.Now, EndTime = DateTime.Now, IsSimulation = false, ServerID = dataObject.ServerID, Server = string.Empty, Version = string.Empty, Name = GetType().Name, HasError = true, ErrorMessage = allErrors.MakeDisplayReady(), ActivityType = ActivityType.Workflow, StateType = StateType.Append }); } // TODO : properly build up DataList prior to this.... result = Invoke(serviceAction, dataObject, dataList); // Remember to clean up ;) if(dataListId != GlobalConstants.NullDataListID) { // Merge the execution DL into the mainDL ;) Guid mergeId = SvrCompiler.Merge(null, dataListId, serviceDataId, enDataListMergeTypes.Union, enTranslationDepth.Data, false, out errors); SvrCompiler.DeleteDataListByID(serviceDataId, true); // Now reset the DataListID on DataObject ;) if(result != serviceDataId) { throw new Exception("FATAL ERROR : DataList Execution Mis-Match!"); } dataObject.DataListID = mergeId; result = mergeId; } else { SvrCompiler.ConditionalMerge(null, DataListMergeFrequency.Always | DataListMergeFrequency.OnCompletion, dataObject.DatalistOutMergeID, dataObject.DataListID, dataObject.DatalistOutMergeFrequency, dataObject.DatalistOutMergeType, dataObject.DatalistOutMergeDepth); } // else we want to keep the DL around until we end execution #region Terminate the service if this Service Action is marked to terminate on fault //If this action should immediately terminate the execution of this service //then stop here and return the results thus far if(serviceAction.TerminateServiceOnFault && errors.HasErrors()) { result = GlobalConstants.NullDataListID; } #endregion } return result; }
public dynamic Switch(ServiceAction serviceAction, dynamic xmlRequest, Guid dataListID) { dynamic result = new UnlimitedObject(); DynamicService anonymousService = new DynamicService(); if(!string.IsNullOrEmpty(serviceAction.Cases.DataElementValue)) { List<ServiceAction> anonymousServiceActions; IEnumerable<ServiceActionCase> caseMatch = serviceAction.Cases.Cases.Where(c => Regex.IsMatch(serviceAction.Cases.DataElementValue, c.Regex)); // ReSharper disable ConvertIfStatementToConditionalTernaryExpression // ReSharper disable PossibleMultipleEnumeration if(caseMatch.Any()) // ReSharper restore PossibleMultipleEnumeration // ReSharper restore ConvertIfStatementToConditionalTernaryExpression { // ReSharper disable PossibleMultipleEnumeration anonymousServiceActions = caseMatch.First().Actions; // ReSharper restore PossibleMultipleEnumeration } else { anonymousServiceActions = serviceAction.Cases.DefaultCase.Actions; } anonymousService.Name = string.Format("serviceOf{0}", serviceAction.Name); anonymousService.Actions = anonymousServiceActions; IDynamicServicesInvoker invoker = new DynamicServicesInvoker(); ErrorResultTO errors; result = invoker.Invoke(anonymousService, xmlRequest, dataListID, out errors); } return result; }
public DynamicService CreateServiceEntry() { var addScheduledResourceService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; var addScheduledResourceAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; addScheduledResourceService.Actions.Add(addScheduledResourceAction); return addScheduledResourceService; }
public DynamicService CreateServiceEntry() { var ds = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder(@"<DataList><ResourceId ColumnIODirection=""Input""/><GetDependsOnMe ColumnIODirection=""Input""/><Dev2System.ManagmentServicePayload ColumnIODirection=""Both""></Dev2System.ManagmentServicePayload></DataList>") }; var sa = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; ds.Actions.Add(sa); return ds; }
public List<DynamicServiceObjectBase> GenerateServiceGraph(StringBuilder serviceData) { if(serviceData == null || serviceData.Length == 0) { throw new ArgumentException("serviceData"); } List<DynamicServiceObjectBase> result = new List<DynamicServiceObjectBase>(); var xe = serviceData.ToXElement(); if(IsSource(serviceData)) { Source src = new Source(); var tmp = src as DynamicServiceObjectBase; ServiceMetaData.ExtractMetaData(xe, ref tmp); var typeOf = xe.AttributeSafe("ResourceType"); enSourceType sourceType; src.Type = !Enum.TryParse(typeOf, out sourceType) ? enSourceType.Unknown : sourceType; src.ConnectionString = xe.AttributeSafe("ConnectionString"); var tmpUri = xe.AttributeSafe("Uri"); if(!string.IsNullOrEmpty(tmpUri)) { src.WebServiceUri = new Uri(tmpUri); } src.AssemblyName = xe.AttributeSafe("AssemblyName"); src.AssemblyLocation = xe.AttributeSafe("AssemblyLocation"); // PBI 6597: TWR - added source ID check var id = ServiceMetaData.SetID(ref xe); src.ID = id; src.ResourceDefinition = serviceData; result.Add(src); } else { DynamicService ds = new DynamicService(); var tmp = ds as DynamicServiceObjectBase; ServiceMetaData.ExtractMetaData(xe, ref tmp); // set the resource def ;) ds.ResourceDefinition = serviceData; var actions = xe.Element("Actions"); XElement action = actions != null ? actions.Element("Action") : xe.Element("Action"); if(action != null) { ServiceAction sa = new ServiceAction { Name = action.AttributeSafe("Name"), ResourceDefinition = serviceData }; // Set service action ;) enActionType actionType; var typeOf = action.AttributeSafe("Type"); if(Enum.TryParse(typeOf, out actionType)) { sa.ActionType = actionType; } var element = action.Element("Outputs"); if(element != null) { sa.OutputSpecification = element.Value; } // set name and id ;) sa.ServiceName = ds.Name; var id = ServiceMetaData.SetID(ref xe); ds.ID = id; if(IsWorkflow(serviceData)) { // Convert to StringBuilder var xElement = action.Element("XamlDefinition"); if(xElement != null) { var def = xElement.ToStringBuilder(); def = def.Replace("<XamlDefinition>", "").Replace("</XamlDefinition>", ""); sa.XamlDefinition = def.Unescape(); } var dataList = xe.Element("DataList"); if(dataList != null) { ds.DataListSpecification = dataList.ToStringBuilder(); } } else { if(sa.ActionType == enActionType.InvokeStoredProc) { int timeout; Int32.TryParse(action.AttributeSafe("CommandTimeout"), out timeout); sa.CommandTimeout = timeout; } var xElement = action.Element("OutputDescription"); if(xElement != null) { sa.OutputDescription = xElement.Value; } // process inputs and outputs ;) var inputs = action.Element("Inputs"); if(inputs != null) { var inputCollection = inputs.Elements("Input"); foreach(var inputItem in inputCollection) { bool emptyToNull; bool.TryParse(inputItem.AttributeSafe("EmptyToNull"), out emptyToNull); ServiceActionInput sai = new ServiceActionInput { Name = inputItem.AttributeSafe("Name"), Source = inputItem.AttributeSafe("Source"), DefaultValue = inputItem.AttributeSafe("DefaultValue"), EmptyToNull = emptyToNull, NativeType = inputItem.AttributeSafe("NativeType") }; if(string.IsNullOrEmpty(sai.NativeType)) { sai.NativeType = "object"; } // handle validators ;) var validators = inputItem.Elements("Validator"); foreach(var validator in validators) { Validator v = new Validator(); enValidationType validatorType; v.ValidatorType = !Enum.TryParse(validator.AttributeSafe("Type"), out validatorType) ? enValidationType.Required : validatorType; sai.Validators.Add(v); } sa.ServiceActionInputs.Add(sai); } } } // add the action ds.Actions.Add(sa); result.Add(ds); } } return result; }
public DynamicService CreateServiceEntry() { DynamicService reloadResourceServicesBinder = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><ResourceID ColumnIODirection=\"Input\"/><ResourceType ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; ServiceAction reloadResourceServiceActionBinder = new ServiceAction { Name = HandlesType(), SourceMethod = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService }; reloadResourceServicesBinder.Actions.Add(reloadResourceServiceActionBinder); return reloadResourceServicesBinder; }
public DynamicService CreateServiceEntry() { var workspaceItemService = new DynamicService { Name = HandlesType(), DataListSpecification = new StringBuilder("<DataList><IsLocalSave ColumnIODirection=\"Input\"/><ItemXml ColumnIODirection=\"Input\"/><Roles ColumnIODirection=\"Input\"/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>") }; var workspaceItemAction = new ServiceAction { Name = HandlesType(), ActionType = enActionType.InvokeManagementDynamicService, SourceMethod = HandlesType() }; workspaceItemService.Actions.Add(workspaceItemAction); return workspaceItemService; }