Ejemplo n.º 1
0
 public LookupModuleMessage(KeyString dataOwnerKey, KeyString moduleKey, SemanticVersionNumber dataOwnerVersion = null, SemanticVersionNumber moduleVersion = null)
 {
     DataOwnerKey     = dataOwnerKey;
     DataOwnerVersion = dataOwnerVersion;
     ModuleKey        = moduleKey;
     ModuleVersion    = moduleVersion;
 }
Ejemplo n.º 2
0
        public void SemanticVersionNumber_ImplicitConversion()
        {
            SemanticVersionNumber semanticVersionNumber  = "2.3.4";
            SemanticVersionNumber semanticVersionNumber2 = new Version(1, 2, 3);

            string  output        = semanticVersionNumber;
            Version outputVersion = semanticVersionNumber2;
        }
Ejemplo n.º 3
0
 public NodeData(string description, JsonSchema dataJsonSchema, KeyString behaviorModuleKey, KeyString behaviorKey, SemanticVersionNumber behaviorVersion, JsonValue behaviorConfiguration)
 {
     Description           = description;
     BehaviorKey           = behaviorKey;
     BehaviorVersion       = behaviorVersion;
     BehaviorConfiguration = behaviorConfiguration;
     DataJsonSchema        = dataJsonSchema;
 }
Ejemplo n.º 4
0
 public LookupWorkflowMessage(KeyString dataOwnerKey, KeyString moduleKey, KeyString workflowKey, SemanticVersionNumber dataOwnerVersion = null, SemanticVersionNumber moduleVersion = null, SemanticVersionNumber workflowVersion = null)
 {
     DataOwnerKey     = dataOwnerKey;
     DataOwnerVersion = dataOwnerVersion;
     ModuleKey        = moduleKey;
     ModuleVersion    = moduleVersion;
     WorkflowKey      = workflowKey;
     WorkflowVersion  = workflowVersion;
 }
Ejemplo n.º 5
0
        public void SemanticVersionNumber_Serialization()
        {
            SemanticVersionNumber semanticVersionNumber = new SemanticVersionNumber(2, 3, 4);

            string output = JsonConvert.SerializeObject(semanticVersionNumber);

            SemanticVersionNumber deserializedSemanticVersionNumber = JsonConvert.DeserializeObject <SemanticVersionNumber>(output);

            deserializedSemanticVersionNumber.ShouldBe(semanticVersionNumber);
        }
Ejemplo n.º 6
0
        public void SemanticVersionNumber_Compare_Major()
        {
            SemanticVersionNumber version       = "2.3.4";
            SemanticVersionNumber lowerVersion  = "1.3.4";
            SemanticVersionNumber higherVersion = "3.3.4";
            SemanticVersionNumber equalVersion  = "2.3.4";

            version.CompareTo(lowerVersion).ShouldBe(1);
            version.CompareTo(higherVersion).ShouldBe(-1);
            version.CompareTo(equalVersion).ShouldBe(0);
        }
        private void DataOwnerCRUDMessageHandler(IDataOwnerCRUDMessage message)
        {
            switch (message.CRUDMessageType)
            {
            case Model.CRUDMessageType.Create:
                CreateDataOwnerMessage createDataOwnerMessage = message as CreateDataOwnerMessage;
                string name = createDataOwnerMessage.DataOwnerDefinition.Name;
                SemanticVersionNumber version = createDataOwnerMessage.DataOwnerDefinition.Version;
                string instanceName           = $"{name}_{version}_1";//Instance number hardcoded
                if (Context.Child(instanceName) == ActorRefs.Nobody)
                {
                    try
                    {
                        var actorProps = Context.DI().Props <DataOwnerActor>();
                        //TODO Add router for the actor for different instances

                        var dataOwnerRef = Context.ActorOf(actorProps, instanceName);

                        _dataOwners.Add(name, new Dictionary <SemanticVersionNumber, IActorRef>()
                        {
                            { version, dataOwnerRef }
                        });

                        foreach (ModuleDefinition moduleDefinition in createDataOwnerMessage.DataOwnerDefinition.ModuleDefinitions)
                        {
                            dataOwnerRef.Tell(new CreateModuleMessage(moduleDefinition));
                        }
                        Sender.Tell(new CreateDataOwnerSucceededMessage(createDataOwnerMessage, dataOwnerRef));
                    }
                    catch (Exception ex)
                    {
                        string errorMessage = string.Format("{0} failed in {1}", ActorId, typeof(CreateDataOwnerMessage).Name);
                        Logger.Error(ex, errorMessage);
                        Sender.Tell(new CreateDataOwnerFailedMessage(createDataOwnerMessage, ex, errorMessage));
                    }
                }
                else
                {
                    string errorMessage = string.Format("{0} received a {1} for a already existing DataOwner", ActorId, typeof(CreateDataOwnerMessage).Name);
                    Logger.Debug(errorMessage);
                    Sender.Tell(new CreateDataOwnerFailedMessage(createDataOwnerMessage, errorMessage));
                }
                break;

            case CRUDMessageType.Delete:
                //Delete children with or without the data
                throw new NotImplementedException();

            default:
                //TODO delete
                throw new WorkflowStartupException("CRUD Message Type Not Implemented");
            }
        }
Ejemplo n.º 8
0
        private void ModuleCRUDMessageHandler(IModuleCRUDMessage message)
        {
            switch (message.CRUDMessageType)
            {
            case Model.CRUDMessageType.Create:
                CreateModuleMessage createModuleMessage = message as CreateModuleMessage;
                string name = createModuleMessage.ModuleDefinition.Name;
                SemanticVersionNumber version = createModuleMessage.ModuleDefinition.Version;
                string instanceName           = name + "." + version.ToString();
                if (Context.Child(instanceName) == ActorRefs.Nobody)
                {
                    try
                    {
                        var actorProps = Context.DI().Props <ModuleActor>();

                        var moduleRef = Context.ActorOf(actorProps, instanceName);

                        _modules.Add(name, new Dictionary <SemanticVersionNumber, IActorRef>()
                        {
                            { version, moduleRef }
                        });

                        foreach (WorkflowDefinition workflowDefinition in createModuleMessage.ModuleDefinition.WorkflowDefinitions)
                        {
                            moduleRef.Tell(new CreateWorkflowMessage(workflowDefinition));
                        }
                        Sender.Tell(new CreateModuleSucceededMessage(createModuleMessage, moduleRef));
                    }
                    catch (Exception ex)
                    {
                        string errorMessage = string.Format("{0} failed in {1}", ActorId, typeof(CreateModuleMessage).Name);
                        Logger.Error(ex, errorMessage);
                        Sender.Tell(new CreateModuleFailedMessage(createModuleMessage, ex, errorMessage));
                    }
                }
                else
                {
                    string errorMessage = string.Format("{0} received a {1} for a already existing Module", ActorId, typeof(CreateModuleMessage).Name);
                    Logger.Debug(errorMessage);
                    Sender.Tell(new CreateModuleFailedMessage(createModuleMessage, errorMessage));
                }
                break;

            case CRUDMessageType.Delete:
                //Delete children with or without the data
                throw new NotImplementedException();

            default:
                //TODO delete
                throw new WorkflowStartupException("CRUD Message Type Not Implemented");
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Looks up an active Workflow child. If version is not supplied the highest version is returned
 /// </summary>
 /// <param name="workflowKey"></param>
 /// <param name="version"></param>
 /// <returns></returns>
 private IActorRef LookupWorkflow(KeyString workflowKey, SemanticVersionNumber version = null)
 {
     if (_workflows.TryGetValue(workflowKey, out Dictionary <SemanticVersionNumber, IActorRef> versions))
     {
         if (version == null && versions != null)
         {
             return(versions[versions.Max(v => v.Key)]);
         }
         else if (versions != null && versions.TryGetValue(version, out IActorRef actorRef))
         {
             return(actorRef);
         }
     }
     return(ActorRefs.Nobody);
 }
Ejemplo n.º 10
0
 public LookupDataOwnerMessage(KeyString dataOwnerKey, SemanticVersionNumber dataOwnerVersion = null)
 {
     DataOwnerKey     = dataOwnerKey;
     DataOwnerVersion = dataOwnerVersion;
 }