Ejemplo n.º 1
0
        /// <summary>
        /// Update Agents from SysDyn.Variables
        /// </summary>
        /// <param name="agents"></param>
        /// <param name="modelNetwork"></param>
        public void SynchronizeSymu(List <ReactiveAgent> agents, ModelNetwork modelNetwork)
        {
            if (agents == null)
            {
                throw new ArgumentNullException(nameof(agents));
            }

            foreach (var variableName in Variables.Outputs)
            {
                // Synchronize VariableAgent from Variables
                if (_variableAgents.Exists(x => x.VariableName == variableName))
                //foreach (var variableAgent in _variableAgent.Where(x => Variables.Exists(x.VariableName)))
                {
                    var variableAgent = _variableAgents.Find(x => x.VariableName == variableName);
                    var agent         = agents.Find(x => x.AgentId.Equals(variableAgent.AgentId));
                    agent.SetProperty(variableAgent.Property, Variables.GetValue(variableName));
                }

                if (modelNetwork == null)
                {
                    continue;
                }
                // Synchronize ModelNetwork from Variables
                foreach (var entity in modelNetwork)
                {
                    if (entity.Model.Variables.Exists(variableName))
                    {
                        entity.Model.Variables.SetValue(variableName, Variables.GetValue(variableName));
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void Add(ModelNetwork modelNetwork)
        {
            if (modelNetwork == null)
            {
                throw new ArgumentNullException(nameof(modelNetwork));
            }

            Add(modelNetwork.GlobalModel());
        }
Ejemplo n.º 3
0
        public void CopyTo(MainOrganization entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            entity.ArtifactNetwork = ArtifactNetwork.Clone();
            entity.ModelNetwork    = ModelNetwork.Clone();
            entity.Models          = Models.Clone();
            entity.Murphies        = Murphies.Clone();
            entity.Communication   = Communication;
            entity.Templates       = Templates;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Process SysDynEngine
        /// Synchronize VariableAgents between Symu and SysDyn if you have setted some VariableAgents
        /// Synchronize ModelNetwork between Symu and SysDyn if you have setted some ModelNetwork.Entities
        /// </summary>
        /// <param name="agents"></param>
        /// <param name="modelNetwork"></param>
        public void Process(List <ReactiveAgent> agents, ModelNetwork modelNetwork)
        {
            if (agents == null)
            {
                throw new ArgumentNullException(nameof(agents));
            }

            // First update variables with the agents' properties' values
            SynchronizeSysDyn(agents, modelNetwork);
            // Then Process
            Process();
            // Finally update agents with the variables' values
            SynchronizeSymu(agents, modelNetwork);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Update SysDyn.Variables from VariablesAgents and ModelNetwork
        /// </summary>
        /// <param name="agents"></param>
        /// <param name="modelNetwork"></param>
        public void SynchronizeSysDyn(List <ReactiveAgent> agents, ModelNetwork modelNetwork)
        {
            if (agents == null)
            {
                throw new ArgumentNullException(nameof(agents));
            }

            foreach (var variableName in Variables.Inputs)
            {
                // Synchronize Variables from VariableAgent
                if (_variableAgents.Exists(x => x.VariableName == variableName))
                {
                    var variableAgent = _variableAgents.Find(x => x.VariableName == variableName);
                    var agent         = agents.Find(x => x.AgentId.Equals(variableAgent.AgentId));
                    Variables.SetValue(variableName, agent.GetProperty(variableAgent.Property));
                }

                if (modelNetwork == null)
                {
                    continue;
                }
                // Synchronize Variables from ModelNetwork
                foreach (var entity in modelNetwork)
                {
                    if (entity.Model.Variables.Exists(variableName))
                    {
                        Variables.SetValue(variableName, entity.Model.Variables.GetValue(variableName));
                    }
                }
            }
            //// Synchronize Variables from VariableAgent
            //foreach (var variableAgent in _variableAgents.Where( x=> Variables.Exists(x.VariableName)))
            //{
            //    var agent = agents.Find(x => x.AgentId.Equals(variableAgent.AgentId));
            //    Variables.SetValue(variableAgent.VariableName,
            //        agent.GetProperty(variableAgent.Property));
            //}
            //// Synchronize Variables from ModelNetwork
            //foreach (var entity in _modelNetwork)
            //{
            //    foreach (var outputName in entity.Model.Variables.Outputs)
            //    {
            //        Variables.SetValue(outputName, entity.Model.Variables.GetValue(outputName));
            //    }
            //}
        }
Ejemplo n.º 6
0
        private void ModelTargetDropDown_SelectionChanged(object sender, RibbonControlEventArgs e)
        {
            previousModelverifier?.UnloadShapes();
            activeModelverifier?.LoadShapes();
            previousModelverifier = activeModelverifier;

            //update ui
            if (activeModelverifier != null)
            {
                this.VerifyButton.Enabled            = this.activeModelverifier.CanVerify;
                this.ImportButton.Enabled            = this.activeModelverifier.CanVerify;
                this.ExportButton.Enabled            = this.activeModelverifier.CanVerify;
                this.CreateNewSPESProject.Visible    = false;
                this.GenerateSubmodelsButton.Visible = Reflection.GetAllModelreferenceTypesInModule(activeModelverifier.GetType()).Any() ||
                                                       activeModelverifier.GetType() == typeof(StrukturellerKontextNetwork) ||
                                                       activeModelverifier.GetType() == typeof(FunktionellerKontextNetwork);

                //special cases:
                if (activeModelverifier.GetType() == typeof(LogicalViewpointNetwork))
                {
                    this.CreateNewEngineeringPath.Visible  = true;
                    this.CompleteInterfaceAutomata.Visible = false;
                }
                else if (activeModelverifier.GetType() == typeof(FunktionsnetzNetwork) || activeModelverifier.GetType() == typeof(TechnicalViewpointNetwork))
                {
                    this.CreateNewEngineeringPath.Visible  = false;
                    this.CompleteInterfaceAutomata.Visible = true;
                }
                else
                {
                    this.CompleteInterfaceAutomata.Visible = false;
                    this.CreateNewEngineeringPath.Visible  = false;
                }
            }
            else
            {
                //none selected
                this.VerifyButton.Enabled              = false;
                this.ImportButton.Enabled              = false;
                this.ExportButton.Enabled              = false;
                this.CreateNewSPESProject.Visible      = true;
                this.GenerateSubmodelsButton.Visible   = false;
                this.CompleteInterfaceAutomata.Visible = false;
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// runs the checker against the target model. throws a ValidationFailedEvent if error is found
 /// </summary>
 /// <param name="pModelNetwork"></param>
 public abstract void Initialize(ModelNetwork pModelNetwork);