# MDSL to JaamSim Converter Version V2.4.2 (MDSL Tools Version 5.4.6) # # Generation metadata: ProcessDrivenSOAD.mdsl specifying ResearchPublicationDemo processed at 01.02.2022 16:52:30 CET # # Invocation example: JaamSim2021-05.jar ProcessDrivenSOAD.cfg # # Known limitations: # # - The input should only contain one flow; the generated file has to be split manually otherwise # - Combines semantics does not align well with all event storming/MDSL flow semantics (wait strategy) # - To be added manually: Assign, Entity Logger, Entity conveyor, Entity processor (and other model objects) # # (c) 2022, The MDSL Team # License: https://github.com/Microservice-API-Patterns/MDSL-Specification/blob/master/LICENSE RecordEdits # ** Configuration of JaamSim simulation of flow Write_Paper ** Define SimEntity { Write_PaperSimEntity } Define EntityGenerator { Start_ResearchingEntityGenerator } # Define Assign { SampleAssignment } Define Queue { Start_Researching Paper_Submitted_for_Review Paper_Will_Be_Revised Feedback_Sent Proceedings_Available DeadLetterQueue } Define Queue { Write_PaperGuardQueue } Define Queue { Accept_PaperChoiceQueue Reject_PaperChoiceQueue } # No aggregation queues in this model Define Server { Write_PaperServer Review_Paper Review_Feedback Accept_Paper Reject_Paper Publish_Authors_Copy } Define Server { Start_ResearchingAggregationInput Paper_Will_Be_RevisedAggregationInput } # No guard servers in this model Define Branch { Acceptance_Decision_Made } # No duplicates in this model # No combines in this model Define Statistics { Paper_Available_Online } Define EntitySink { Write_PaperEntitySink } # *** Standard definitions to jumpstart simulation Define DiscreteDistribution { TwoWayDiscreteDistribution } Define ExponentialDistribution { DefaultGenerateDistribution } Define UniformDistribution { DefaultUniformDistribution } Define DisplayEntity { XY-Grid XYZ-Axis } # was: Define ColladaModel { Axis Grid100x100 } Define ColladaModel { Axis Grid100x100 } Define OverlayClock { Clock } Define OverlayText { Title } Define View { View1 } # *** Sample Assign and Other Sample Objects/Entities # SampleAssignment StateAssignment { SecondState } # SampleAssignment AttributeAssignmentList { { 'this.obj.SampleCustomVariable=this.obj.SampleCustomVariable+1' } } # SampleAssignment NextComponent { Write_PaperEntitySink } TwoWayDiscreteDistribution UnitType { DimensionlessUnit } DefaultGenerateDistribution UnitType { TimeUnit } DefaultUniformDistribution UnitType { TimeUnit } # *** Simulation (as some Statistics usage, and two sample states) *** Simulation Description { 'Simulate ResearchPublicationDemo' } # Simulation RunDuration { 1 min } Simulation RunOutputList { { [Write_PaperStatistics].SampleAverage/1[min] } { '[Write_PaperStatistics].EntityTimeAverage("ProcessInitiated")/1[min]' } } # Simulation NumberOfReplications { 10 } # *** DiscreteDistribution *** TwoWayDiscreteDistribution RandomSeed { 1 } TwoWayDiscreteDistribution ValueList { 1 2 } TwoWayDiscreteDistribution ProbabilityList { 0.50 0.50 } # TODO add three way etc. if needed # *** ExponentialDistribution *** DefaultGenerateDistribution RandomSeed { 1 } DefaultGenerateDistribution Mean { 1 min } # *** UniformDistribution *** DefaultUniformDistribution RandomSeed { 3 } DefaultUniformDistribution MinValue { 0.75 min } DefaultUniformDistribution MaxValue { 0.80 min } # *** SimEntity *** Write_PaperSimEntity InitialState { ProcessInitiated } Write_PaperSimEntity AttributeDefinitionList { SampleCustomVariable 0 } # *** EntityGenerator *** Start_ResearchingEntityGenerator NextComponent { Start_Researching } Start_ResearchingEntityGenerator PrototypeEntity { Write_PaperSimEntity } Start_ResearchingEntityGenerator InterArrivalTime { DefaultGenerateDistribution } Start_ResearchingEntityGenerator PrototypeEntity { Write_PaperSimEntity } Start_ResearchingEntityGenerator BaseName { Write_PaperSimEntity } # *** Queues *** Start_Researching MaxValidLength { 100000000 } Start_Researching StateAssignment { Start_ResearchingQueuePassed } Paper_Submitted_for_Review MaxValidLength { 100000000 } Paper_Submitted_for_Review StateAssignment { Paper_Submitted_for_ReviewQueuePassed } Paper_Will_Be_Revised MaxValidLength { 100000000 } Paper_Will_Be_Revised StateAssignment { Paper_Will_Be_RevisedQueuePassed } Feedback_Sent MaxValidLength { 100000000 } Feedback_Sent StateAssignment { Feedback_SentQueuePassed } Proceedings_Available MaxValidLength { 100000000 } Proceedings_Available StateAssignment { Proceedings_AvailableQueuePassed } Write_PaperGuardQueue MaxValidLength { 100000000 } Accept_PaperChoiceQueue MaxValidLength { 100000000 } Reject_PaperChoiceQueue MaxValidLength { 100000000 } # *** Servers *** Write_PaperServer NextComponent { Paper_Submitted_for_Review } Write_PaperServer WaitQueue { Write_PaperGuardQueue } Write_PaperServer StateAssignment { Write_PaperServerFinished } # Write_PaperServer ServiceTime { 1.0 h } Review_Paper NextComponent { Acceptance_Decision_Made } Review_Paper WaitQueue { Paper_Submitted_for_Review } Review_Paper StateAssignment { Review_PaperFinished } # Review_Paper ServiceTime { 1.0 h } Review_Feedback NextComponent { Paper_Will_Be_Revised } Review_Feedback WaitQueue { Feedback_Sent } Review_Feedback StateAssignment { Review_FeedbackFinished } # Review_Feedback ServiceTime { 1.0 h } Accept_Paper NextComponent { Proceedings_Available } Accept_Paper WaitQueue { Accept_PaperChoiceQueue } Accept_Paper StateAssignment { Accept_PaperFinished } # Accept_Paper ServiceTime { 1.0 h } Reject_Paper NextComponent { Feedback_Sent } Reject_Paper WaitQueue { Reject_PaperChoiceQueue } Reject_Paper StateAssignment { Reject_PaperFinished } # Reject_Paper ServiceTime { 1.0 h } Publish_Authors_Copy NextComponent { Paper_Available_Online } Publish_Authors_Copy WaitQueue { Proceedings_Available } Publish_Authors_Copy StateAssignment { Publish_Authors_CopyFinished } # Publish_Authors_Copy ServiceTime { 1.0 h } Start_ResearchingAggregationInput NextComponent { Write_PaperGuardQueue } Start_ResearchingAggregationInput WaitQueue { Start_Researching } Paper_Will_Be_RevisedAggregationInput NextComponent { Write_PaperGuardQueue } Paper_Will_Be_RevisedAggregationInput WaitQueue { Paper_Will_Be_Revised } # *** Branches *** Acceptance_Decision_Made NextComponentList { Accept_PaperChoiceQueue Reject_PaperChoiceQueue } Acceptance_Decision_Made Choice { TwoWayDiscreteDistribution } # *** Duplicates *** # *** Combines *** # *** Statistics Elements *** Paper_Available_Online UnitType { TimeUnit } Paper_Available_Online NextComponent { Write_PaperEntitySink } # *** EntitySink *** # Nothing to be defined for entity sinks here # *** EntityProcessor, Assign, ... *** # not mapped # *** GRAPHICS INPUTS *** Simulation RealTime { TRUE } Simulation SnapToGrid { TRUE } Simulation ShowLabels { TRUE } Simulation ShowSubModels { TRUE } Simulation ShowEntityFlow { TRUE } Simulation ShowModelBuilder { TRUE } Simulation ShowObjectSelector { TRUE } Simulation ShowInputEditor { TRUE } Simulation ShowOutputViewer { TRUE } Simulation ShowPropertyViewer { FALSE } Simulation ShowLogViewer { FALSE } TwoWayDiscreteDistribution Position { 7 2 0 m } DefaultGenerateDistribution Position { 11 2 0 m } DefaultUniformDistribution Position { 15 2 0 m } Write_PaperSimEntity Position { -5 2 0 m } Write_PaperSimEntity Alignment { 0 0 0 } Start_ResearchingEntityGenerator Position { -2 2 0 m } # SampleAssignment Position { -3 5 0 m } # position information for servers Write_PaperServer Position { -1 0 0 m } Review_Paper Position { 2 0 0 m } Review_Feedback Position { 5 0 0 m } Accept_Paper Position { 8 0 0 m } Reject_Paper Position { 11 0 0 m } Publish_Authors_Copy Position { 14 0 0 m } # guard servers (complex MDSL2JaamSim mapping case) Start_ResearchingAggregationInput Position { 0 -2 0 m } Paper_Will_Be_RevisedAggregationInput Position { 5 -2 0 m } # position information for branches (commands and events) Acceptance_Decision_Made Position { 1 -4 0 m } # position information for duplicates (commands and events) # position information for combines (events only) # position information for split/choice queues, aggregation queues, guard queues (complex MDSL2JaamSim mapping cases) Write_PaperGuardQueue Position { -1 -6 0 m } Accept_PaperChoiceQueue Position { 4 -6 0 m } Reject_PaperChoiceQueue Position { 9 -6 0 m } # position information for queues Start_Researching Position { -2 -8 0 m } Paper_Submitted_for_Review Position { 1 -8 0 m } Paper_Will_Be_Revised Position { 4 -8 0 m } Feedback_Sent Position { 7 -8 0 m } Proceedings_Available Position { 10 -8 0 m } DeadLetterQueue Position { 13 -8 0 m } # not used (EIP demonstrator) # position information for statistics (termination command and events) Paper_Available_Online Position { 17 -4 0 m } # position information for entity sink (one per flow) Write_PaperEntitySink Position { 20 -4 0 m } # *** ColladaModel *** Axis ColladaFile { /shapes/axis_text.dae } Grid100x100 ColladaFile { /shapes/grid100x100.dae } # *** DisplayEntity *** XYZ-Axis Description { 'Unit vectors' } XYZ-Axis Alignment { -0.4393409 -0.4410096 -0.4394292 } # XYZ-Axis Size { 1.125000 1.1568242 1.1266404 m } XYZ-Axis DisplayModel { Axis } # from Factory example: XYZ-Axis Show { FALSE } XYZ-Axis Movable { FALSE } XY-Grid Description { 'Grid for the X-Y plane (100 m x 100 m)' } XY-Grid Size { 100 100 m } XY-Grid DisplayModel { Grid100x100 } XY-Grid Movable { FALSE } # *** OverlayClock *** Clock Description { 'Simulation date and time' } Clock ScreenPosition { 15 15 } Clock AlignBottom { TRUE } Clock TextHeight { 10 } Clock FontColour { gray20 } Clock FontStyle { ITALIC } Clock DateFormat { 'yyyy-MMM-dd HH:mm:ss.SSS' } # *** OverlayText *** Title Description { 'ResearchPublicationDemo' } Title ScreenPosition { 15 15 } Title Format { 'Simulation process model for ResearchPublicationDemo' } Title TextHeight { 18 } Title FontColour { 150 23 46 } Title FontStyle { BOLD } # *** View *** View1 Description { 'Default view window for ResearchPublicationDemo' } # from Factory example: View1 ViewCenter { -0.883807 0.464479 -2.856374 m } View1 ViewPosition { -0.883807 0.464479 14.464134 m } # View1 ViewCenter { 5.975215 -2.17958 1.504278 m } # View1 ViewPosition { 15.975215 -12.17958 11.504278 m } View1 ShowWindow { TRUE } # from Factory example: View1 Lock2D { TRUE } View1 SkyboxImage { /images/sky_map_2048x1024.jpg } # note that each .cfg file should only model and simulate one flow