public void CanCompileWorkflowAndDetectMappingChangeWhenIODirectionChanges() { ServiceModelCompiler smc = new ServiceModelCompiler(); const string PreStr = @"<Service ID=""bd4ceb89-0e68-4094-ad6e-b79cd256c3e6"" Version=""1.0"" ServerID=""51a58300-7e9d-4927-a57b-e5d700b11b55"" Name=""Unsaved 1"" ResourceType=""WorkflowService""><DataList><a ColumnIODirection=""Input""/><b ColumnIODirection=""Output""/></DataList><DisplayName>Unsaved 1</DisplayName><Category>Unassigned</Category><IsNewWorkflow>false</IsNewWorkflow><AuthorRoles></AuthorRoles><Comment></Comment><Tags></Tags><IconPath></IconPath><HelpLink></HelpLink><UnitTestTargetWorkflowService></UnitTestTargetWorkflowService><DataList /><Action Name=""InvokeWorkflow"" Type=""Workflow""><XamlDefinition><Activity x:Class=""Unsaved 1"" xmlns=""http://schemas.microsoft.com/netfx/2009/xaml/activities"" xmlns:dc=""clr-namespace:Dev2.Common;assembly=Dev2.CommonDataUtils"" xmlns:ddc=""clr-namespace:Dev2.DataList.Contract;assembly=Dev2.Data"" xmlns:ddcb=""clr-namespace:Dev2.DataList.Contract.Binary_Objects;assembly=Dev2.Data"" xmlns:ddd=""clr-namespace:Dev2.Data.Decision;assembly=Dev2.Data"" xmlns:dddo=""clr-namespace:Dev2.Data.Decisions.Operations;assembly=Dev2.Data"" xmlns:ddsm=""clr-namespace:Dev2.Data.SystemTemplates.Models;assembly=Dev2.Data"" xmlns:mva=""clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"" xmlns:s=""clr-namespace:System;assembly=mscorlib"" xmlns:scg=""clr-namespace:System.Collections.Generic;assembly=mscorlib"" xmlns:sco=""clr-namespace:System.Collections.ObjectModel;assembly=mscorlib"" xmlns:uaba=""clr-namespace:Unlimited.Applications.BusinessDesignStudio.Activities;assembly=Dev2.Activities"" xmlns:uf=""clr-namespace:Unlimited.Framework;assembly=Dev2.Core"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""><x:Members><x:Property Name=""AmbientDataList"" Type=""InOutArgument(scg:List(x:String))"" /><x:Property Name=""ParentWorkflowInstanceId"" Type=""InOutArgument(s:Guid)"" /><x:Property Name=""ParentServiceName"" Type=""InOutArgument(x:String)"" /></x:Members><mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings><TextExpression.NamespacesForImplementation><scg:List x:TypeArguments=""x:String"" Capacity=""7""><x:String>Dev2.CommonDataUtils</x:String><x:String>Dev2.Data.Decisions.Operations</x:String><x:String>Dev2.Data.SystemTemplates.Models</x:String><x:String>Dev2.DataList.Contract</x:String><x:String>Dev2.DataList.Contract.Binary_Objects</x:String><x:String>Unlimited.Framework</x:String><x:String>Unlimited.Applications.BusinessDesignStudio.Activities</x:String></scg:List></TextExpression.NamespacesForImplementation><TextExpression.ReferencesForImplementation><sco:Collection x:TypeArguments=""AssemblyReference""><AssemblyReference>Dev2.CommonDataUtils</AssemblyReference><AssemblyReference>Dev2.Data</AssemblyReference><AssemblyReference>Dev2.Core</AssemblyReference><AssemblyReference>Dev2.Activities</AssemblyReference></sco:Collection></TextExpression.ReferencesForImplementation><Flowchart DisplayName=""Unsaved 1""><Flowchart.Variables><Variable x:TypeArguments=""scg:List(x:String)"" Name=""InstructionList"" /><Variable x:TypeArguments=""x:String"" Name=""LastResult"" /><Variable x:TypeArguments=""x:Boolean"" Name=""HasError"" /><Variable x:TypeArguments=""x:String"" Name=""ExplicitDataList"" /><Variable x:TypeArguments=""x:Boolean"" Name=""IsValid"" /><Variable x:TypeArguments=""uf:UnlimitedObject"" Name=""d"" /><Variable x:TypeArguments=""uaba:Util"" Name=""t"" /><Variable x:TypeArguments=""ddd:Dev2DataListDecisionHandler"" Name=""Dev2DecisionHandler"" /></Flowchart.Variables><Flowchart.StartNode><x:Null /></Flowchart.StartNode></Flowchart></Activity></XamlDefinition></Action><BizRule /><WorkflowActivityDef /><Source /></Service>"; const string PostStr = @"<Service ID=""bd4ceb89-0e68-4094-ad6e-b79cd256c3e6"" Version=""1.0"" ServerID=""51a58300-7e9d-4927-a57b-e5d700b11b55"" Name=""Unsaved 1"" ResourceType=""WorkflowService""><DataList><a ColumnIODirection=""Input""/><b ColumnIODirection=""Input""/></DataList><DisplayName>Unsaved 1</DisplayName><Category>Unassigned</Category><IsNewWorkflow>false</IsNewWorkflow><AuthorRoles></AuthorRoles><Comment></Comment><Tags></Tags><IconPath></IconPath><HelpLink></HelpLink><UnitTestTargetWorkflowService></UnitTestTargetWorkflowService><DataList /><Action Name=""InvokeWorkflow"" Type=""Workflow""><XamlDefinition><Activity x:Class=""Unsaved 1"" xmlns=""http://schemas.microsoft.com/netfx/2009/xaml/activities"" xmlns:dc=""clr-namespace:Dev2.Common;assembly=Dev2.CommonDataUtils"" xmlns:ddc=""clr-namespace:Dev2.DataList.Contract;assembly=Dev2.Data"" xmlns:ddcb=""clr-namespace:Dev2.DataList.Contract.Binary_Objects;assembly=Dev2.Data"" xmlns:ddd=""clr-namespace:Dev2.Data.Decision;assembly=Dev2.Data"" xmlns:dddo=""clr-namespace:Dev2.Data.Decisions.Operations;assembly=Dev2.Data"" xmlns:ddsm=""clr-namespace:Dev2.Data.SystemTemplates.Models;assembly=Dev2.Data"" xmlns:mva=""clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"" xmlns:s=""clr-namespace:System;assembly=mscorlib"" xmlns:scg=""clr-namespace:System.Collections.Generic;assembly=mscorlib"" xmlns:sco=""clr-namespace:System.Collections.ObjectModel;assembly=mscorlib"" xmlns:uaba=""clr-namespace:Unlimited.Applications.BusinessDesignStudio.Activities;assembly=Dev2.Activities"" xmlns:uf=""clr-namespace:Unlimited.Framework;assembly=Dev2.Core"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""><x:Members><x:Property Name=""AmbientDataList"" Type=""InOutArgument(scg:List(x:String))"" /><x:Property Name=""ParentWorkflowInstanceId"" Type=""InOutArgument(s:Guid)"" /><x:Property Name=""ParentServiceName"" Type=""InOutArgument(x:String)"" /></x:Members><mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings><TextExpression.NamespacesForImplementation><scg:List x:TypeArguments=""x:String"" Capacity=""7""><x:String>Dev2.CommonDataUtils</x:String><x:String>Dev2.Data.Decisions.Operations</x:String><x:String>Dev2.Data.SystemTemplates.Models</x:String><x:String>Dev2.DataList.Contract</x:String><x:String>Dev2.DataList.Contract.Binary_Objects</x:String><x:String>Unlimited.Framework</x:String><x:String>Unlimited.Applications.BusinessDesignStudio.Activities</x:String></scg:List></TextExpression.NamespacesForImplementation><TextExpression.ReferencesForImplementation><sco:Collection x:TypeArguments=""AssemblyReference""><AssemblyReference>Dev2.CommonDataUtils</AssemblyReference><AssemblyReference>Dev2.Data</AssemblyReference><AssemblyReference>Dev2.Core</AssemblyReference><AssemblyReference>Dev2.Activities</AssemblyReference></sco:Collection></TextExpression.ReferencesForImplementation><Flowchart DisplayName=""Unsaved 1""><Flowchart.Variables><Variable x:TypeArguments=""scg:List(x:String)"" Name=""InstructionList"" /><Variable x:TypeArguments=""x:String"" Name=""LastResult"" /><Variable x:TypeArguments=""x:Boolean"" Name=""HasError"" /><Variable x:TypeArguments=""x:String"" Name=""ExplicitDataList"" /><Variable x:TypeArguments=""x:Boolean"" Name=""IsValid"" /><Variable x:TypeArguments=""uf:UnlimitedObject"" Name=""d"" /><Variable x:TypeArguments=""uaba:Util"" Name=""t"" /><Variable x:TypeArguments=""ddd:Dev2DataListDecisionHandler"" Name=""Dev2DecisionHandler"" /></Flowchart.Variables><Flowchart.StartNode><x:Null /></Flowchart.StartNode></Flowchart></Activity></XamlDefinition></Action><BizRule /><WorkflowActivityDef /><Source /></Service>"; Guid sID = Guid.NewGuid(); var msgs = smc.Compile(sID, ServerCompileMessageType.WorkflowMappingChangeRule, new StringBuilder(PreStr), new StringBuilder(PostStr)); Assert.AreEqual(1, msgs.Count); Assert.AreEqual(CompileMessageType.MappingChange, msgs[0].MessageType); var expected = @"<Args><Input>[{""Name"":""a"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false,""IsTextResponse"":false,""IsObject"":false},{""Name"":""b"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false,""IsTextResponse"":false,""IsObject"":false}]</Input><Output>[]</Output></Args>"; var actual = msgs[0].MessagePayload; FixBreaks(ref expected, ref actual); Assert.AreEqual(expected, actual); }
protected void CompileTheResourceAfterSave(Guid workspaceID, IResource resource, StringBuilder contents, ServiceAction beforeAction) { if (beforeAction != null) { // Compile the service var smc = new ServiceModelCompiler(); var messages = GetCompileMessages(resource, contents, beforeAction, smc); if (messages != null) { var keys = _resourceCatalog.WorkspaceResources.Keys.ToList(); CompileMessageRepo.Instance.AddMessage(workspaceID, messages); //Sends the message for the resource being saved var dependsMessageList = new List <ICompileMessageTO>(); keys.ForEach(workspace => { dependsMessageList.AddRange(UpdateDependantResourceWithCompileMessages(workspace, resource, messages)); }); _resourceCatalog.SendResourceMessages?.Invoke(resource.ResourceID, dependsMessageList); } } }
static IList <ICompileMessageTO> GetCompileMessages(IResource resource, StringBuilder contents, ServiceAction beforeAction, ServiceModelCompiler smc) { var messages = new List <ICompileMessageTO>(); switch (beforeAction.ActionType) { case enActionType.Workflow: messages.AddRange(smc.Compile(resource.ResourceID, ServerCompileMessageType.WorkflowMappingChangeRule, beforeAction.ResourceDefinition, contents)); break; case enActionType.BizRule: break; case enActionType.InvokeStoredProc: break; case enActionType.InvokeWebService: break; case enActionType.InvokeDynamicService: break; case enActionType.InvokeManagementDynamicService: break; case enActionType.InvokeServiceMethod: break; case enActionType.Plugin: break; case enActionType.ComPlugin: break; case enActionType.Switch: break; case enActionType.Unknown: break; case enActionType.RemoteService: break; default: throw new ArgumentOutOfRangeException(); } return(messages); }
private static IList <ICompileMessageTO> GetCompileMessages(IResource resource, StringBuilder contents, ServiceAction beforeAction, ServiceModelCompiler smc) { List <ICompileMessageTO> messages = new List <ICompileMessageTO>(); switch (beforeAction.ActionType) { case enActionType.Workflow: messages.AddRange(smc.Compile(resource.ResourceID, ServerCompileMessageType.WorkflowMappingChangeRule, beforeAction.ResourceDefinition, contents)); break; default: throw new ArgumentOutOfRangeException(); } return(messages); }