{"data":{"markdownRemark":{"html":"<p><code class=\"language-text\">Actions</code> and <code class=\"language-text\">Sequences</code> are used to define a sequence of actions for the agents to follow at every step, or at setup.</p>\n<h2 id=\"executing-action-in-sequences\"><a href=\"#executing-action-in-sequences\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Executing Action in Sequences</h2>\n<p>A <code class=\"language-text\">Sequence</code> is a list of <code class=\"language-text\">actions</code> that are executed consecutively. Sequences are composable, which means a sequence can be a list of other sequences as well as actions. Multiple sequences can be run in a single <code class=\"language-text\">setup()</code> or <code class=\"language-text\">step()</code>.</p>\n<p>Every sequence needs to be run in order for the sequence to be executed.</p>\n<p class=\"code-header\">Creating and running an empty Sequence  (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyClass</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">AgentBasedModel</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>GlobalState<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n\n  <span class=\"token function\">run</span><span class=\"token punctuation\">(</span>Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Actions have to be created for a specific class. It is best practice to create actions inside the class of the Agent the action is being defined for.</p>\n<p>When creating an action, two parameters need to defined.</p>\n<ol>\n<li>The agent that will execute this action</li>\n<li>The function to be executed by the agent</li>\n</ol>\n<p class=\"code-header\">Creating actions and adding them to a sequence  (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> Action<span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>AgentA<span class=\"token punctuation\">></span></span> sendMessageToAgentB <span class=\"token operator\">=</span>\n  Action<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentA<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">,</span> agentA <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">/** send message */</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> Action<span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>AgentB<span class=\"token punctuation\">></span></span> recieveMessage <span class=\"token operator\">=</span>\n  Action<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentB<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">,</span> agentB <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">/** recieve message */</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nrun <span class=\"token punctuation\">(</span>\n\tSequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n\t\tsendMessageToAgentB<span class=\"token punctuation\">,</span>\n\t\trecieveMessage\n\t<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>The <code class=\"language-text\">run</code> method can also take a list of actions which it will execute as though it's a sequence, so the above code could also be written like this.</p>\n<p class=\"code-header\">(Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> Action<span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>AgentA<span class=\"token punctuation\">></span></span> sendMessageToAgentB <span class=\"token operator\">=</span>\n  Action<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentA<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">,</span> agentA <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">/** send message */</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> Action<span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>AgentB<span class=\"token punctuation\">></span></span> recieveMessage <span class=\"token operator\">=</span>\n  Action<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentB<span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">,</span> agentB <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">/** recieve message */</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nrun <span class=\"token punctuation\">(</span>\n  \tsendMessageToAgentB<span class=\"token punctuation\">,</span>\n  \trecieveMessage\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<div class=\"ui segment error message\">\nAn action within a sequence will only be executed by an agent if that agent has received a message. If an action needs to be executed by all agents of a type, <b>even if some of those agents have not received a message</b>, this action needs to be at the beginning of a new sequence.\n</div>\n<p class=\"code-header\">Message passing(Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//If AgentB isn't sent message, it will not do other processing</span>\nrun <span class=\"token punctuation\">(</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">conditionallySendMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">recieveMessageActionAndDoOtherProcessing</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\">//Split other processing into another sequence to ensure all AgentB do processing</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">conditionallySendMessage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">recieveMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doOtherProcessing</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<div class=\"ui segment warning message\">\n<h4>Messages cannot be passed between sequence runs</h4>\nAll message passing and receiving needs to be done within a single sequence run. (This does not apply to sequences that are composed of other sequences, messages will be passed between sequences called from inside another sequence.)\n</div>\n<p class=\"code-header\">Message passing (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//Message will be passed from AgentA to AgentB</span>\nrun <span class=\"token punctuation\">(</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">sendMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">recieveMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\">//Message will NOT be passed from AgentA to AgentB</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">sendMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">recieveMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"executing-action-in-parallel\"><a href=\"#executing-action-in-parallel\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Executing Action in Parallel</h2>\n<p>In all the sequences we have shown until now, the actions happen one after the next, like in the following diagram.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/line-91ed096cb72adc5607c03fd2afb9bd65-69bd3.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 113px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 138.29787234042556%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAYAAABh2p9gAAAACXBIWXMAABcSAAAXEgFnn9JSAAAEmElEQVRIx61VWVNiRxT29+QH5MfkOb8glal5SNW8TCaJmXErnXFQHCpug8o6KMtFRcSVHVlUQAUUwQ2VRUGWL+f27SuYGZOX3Kqv+pzTh8Pp7u/r7gJ9rVYL/8fXajbRJRdrPjRxsxPHtT+C60D0a/ij346L8EVwd3zB6nTJxXILVhQCBhSTVtzGzU+RMKOYsDB8yy8mLchZZlCMHUoFb3YSrBiwT4gRdglxwh6P7fJ4mMdkP8Z9MdeHjFEnFRSXeZey47ayAfX074hFtXCuKBEMqLGyMgrH8giMhj7cVTbh3p5g8zbre3jckwzuzXGqEkV0RiUVLNAe3GcWcXq+hPkvA1B8/IVhfU3FfqjX9cAuDOPocB5Tk2+w6hyD1TKEedMAw7JdwbrdmVZKBW+jh7jc0vKlJFGsbtK4w5ezx5cmLivCcyIdWyNvTxArfX1iQemUz+xOnK1rkQvocU7I+3U49WofkfMQZNunI3TMUa6rvxtOjalNG7aXuylEFhzw6qzw620MPq0VgYVlbL1VwT9rht8oPM5JEODRWLDrC7PWumRii6R89qs94HjSglI4+R/MbvGCzXaXzTqhwVEX/4jGWhOW737AwYiJ5TTIb+eA5ciNdcnFapdFnC25kLMJyAv2R+SsAs5XVxF+1YP0Zw3OHA7KobgggeWRfx3cayulXq4i+0WPe6KNSNBGfbuNxja14WGkbrW8aDxsUWdu6spDo5TTbLpxsTaLgjfClUJ7cxM2MYpUyjJlolwZYVRrblxdrZAd4vEd+iMfz4tw+HGg08g8TKIUI03eb6K/72csLSkwMfEaApHZaOzD4OBLfCSi53J26PU9cDhGMTn5K0xEaoOhl/licd+4UtZyHKV9OsW6G9GwBlrNO8yo/0AkPIdYTAuX6xO8nimcnNhgJeWEgjPwkL+1Nc6kl0ya2Eo8KoVU8D5XoNtilrUtsT7cIXp5jHN1JDoujTgfk3QX2GD+c0A8ZenMxasnY9AgplMhpB4ljCD4WSGB7JBqCKFpBQJyrGMuMDEM0+tuJGL7T3lYrzaQPzhGOpZEevdAAtmZ+BF21QKOvFFk9g4pdvA4nyE7ReNtuSLTRirWajSeF0CpgujLIVxYN/9VKM1Gsy09FiAF1Mu1J3ggjoqKsH//I1ITAst7uL3/Kk/+HvdQZHrWRLeIXf8Ugg75ZSPSM3/h1KJBftHwGO/MyZkF1Ev3UoeVVJ4kNENWgJM0yEkb6iBvmMeDPB7ho2TfnYoyXeRPAN3Y5UMbmjSZ2Deyq/76ehW3N2u4vHAgmfiCvZgOtaob5fIGi6eOFlC4cjL7mkZRQQndFH8C6E2ppheRPVvEQP8LTE//hoGBFzCbB5nd2/sTUqkFXFBxpfIVU9LU1BvMznZDTQLQzr1lHA1NKeU3JYoSPY1VInaxuA4XvSVRUsjNjQtXBSdOaTnpND2bpXUc0LuSFZeXX8RJVmBzhYKTkd33aVgqWCuUkDXOoVFycbX4+X76OmzZD3b4AT6/g/yGGvPvhtqnXM0XkDFZ4R4bg+vDh2cwDNf7f8SGh7E6OATLoBL5/Dn+BhPAyffnczinAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/line-91ed096cb72adc5607c03fd2afb9bd65-df41d.webp 173w,\n/static/line-91ed096cb72adc5607c03fd2afb9bd65-cd795.webp 235w\"\n          sizes=\"(max-width: 113px) 100vw, 113px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/line-91ed096cb72adc5607c03fd2afb9bd65-60b22.png 173w,\n/static/line-91ed096cb72adc5607c03fd2afb9bd65-69bd3.png 235w\"\n          sizes=\"(max-width: 113px) 100vw, 113px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/line-91ed096cb72adc5607c03fd2afb9bd65-69bd3.png\"\n          alt=\"line\"\n          title=\"\"\n          src=\"/static/line-91ed096cb72adc5607c03fd2afb9bd65-69bd3.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  \n  </a>\n    </p>\n<p>It is also possible to have two actions happening at the same time, as in the diagram below. Here, AgentA can send a message that both AgentB and AgentC receive and process at the same time. They can then both send a message to AgentA to process.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/split-dd31ff670e3c3aa724c461519960bee2-778a7.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 283px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 73.51443123938878%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABcSAAAXEgFnn9JSAAAC5UlEQVQ4y3WU31MaVxTH+Us705nOdPral3amHQWUpHnoWxVB8pCXThJ0tCKJAZQm00yrNYoCisDuwqILbFDwF8Iuy6fHJR2lqWfmO+fe3e85957zvfd6+I8Nh0PXD2569Os6tllz0W9UsUwdq6nTM3Qcyx7j/2uehxJ2a0cY1VVqlTgVJcbHehJdW8WorXF6kuBcK37iO+MJbxMMBoM72DYD4VzrRUrZl3z48xkHmeeUi8tkP/xKIRtFzS1QzfztJrAtayz+sx2O2UWbYcdkYBp0/tjEOWu66DWMB0M8tVqNmZkZZmdnCQpufWg+THAuyNz8PKHIU+aCIZ589a07Ds1HCEcihMIhGYeEP0MwOCs5fiEifE+73Sa1vk4ylRZsuH7hyRxv4m/ceSJ5+y/F+tu06xMJma+nebUYY/HnMKnf35FMbrjcjXT6XsmdE2ncseCE7vs0tCuj+Vn1rh6rB+c63NShXuTmr7eI/NIa4XSMT6K4iqro6jIHR1Fy+eeox3HK6hIlZYmm+ZpmfkuaL3HKJoXSSwpHCxTln9FKcliIotViNPU4Z0pptMN+y8Q4XCO39YJSZklUXHG9sr9MNSvY23ZXv9YLlDOLHG5LEuFUDmIUdxap5FdQtpcwNe2u5OFVF0v62W93qMffcdMwsTodrs3WmIqDzgX25QVXqk5j7T321SW91ind086oZEVRmJiYwDvlxz89jT8Q4Lsvvsbn9eF/FGAqMI3X58UnmPRO4puewv/4EZM//Mj3X37D1E+P3TifxAck1tPr9dBkq6qqChRUWaByXEPVKihFBaWsUsofsRmOopTU0TeBVq0KT3f5bqx47X7Jn9nlObaxi/NxH8vY4XI3JQd8D7uZwTrJiJLd/z/Yt1fPcZx7GOCI9NeVHCV1gb2DF+RF/eNWgnwxSqn6G41GnEZuJJQj1+1+/IOPQ7/VxMgmKW+viMqv0HZW0Xbj6PuvUbdiNJTyiO+MPw7/AJLXLHgGZ0dHAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/split-dd31ff670e3c3aa724c461519960bee2-3f5da.webp 173w,\n/static/split-dd31ff670e3c3aa724c461519960bee2-42e8c.webp 345w,\n/static/split-dd31ff670e3c3aa724c461519960bee2-9925b.webp 589w\"\n          sizes=\"(max-width: 283px) 100vw, 283px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/split-dd31ff670e3c3aa724c461519960bee2-9ef42.png 173w,\n/static/split-dd31ff670e3c3aa724c461519960bee2-77645.png 345w,\n/static/split-dd31ff670e3c3aa724c461519960bee2-778a7.png 589w\"\n          sizes=\"(max-width: 283px) 100vw, 283px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/split-dd31ff670e3c3aa724c461519960bee2-778a7.png\"\n          alt=\"split\"\n          title=\"\"\n          src=\"/static/split-dd31ff670e3c3aa724c461519960bee2-778a7.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  \n  </a>\n    </p>\n<p>Put the <code class=\"language-text\">actions</code> that need to happen in parallel in a <code class=\"language-text\">split</code>.</p>\n<div class=\"ui segment warning message\">\nAs for other sequence runs, message cannot be passed between splits.\n</div>\n<p class=\"code-header\">Split (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">run <span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    Split<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n      AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      AgentC<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>It is also possible to want to do several actions in parallel, or sequences of their own in parallel.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-778a7.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 283px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 97.96264855687605%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABcSAAAXEgFnn9JSAAADiklEQVQ4y32Ua08bVxCG/Tv7pVKlqj+gVVU1AgMl/VD1M2AoqVL1ApgA4RIMOBDahBIIJgYb2+vbrtde38A38H3XT86uudgFutKrc86cmdmZeWeOjf98nU7HWvV6g2Y6QTunWmhmuvtWNkFDUzFa7T79m8/2mMOaKqEpa6jKK5ToCvn0Fqq8hpZ0caFtUo5L1/pGv0PTga7rd2i30YVONSERPp3jw7/P8X+cISItcXr0J0Ehi/mcKMcHloN2u9Vnfy/Cvq9cpFPKYeQ0Su/e0ylk6RSzNDLaoyY2VVUZHx9nYmLiFg5zdTiYnJ5m6tmvOBxT/PTl1+L87Fom1qlJJn+ZurYdZ2xsjGlxZysUCmxsbNxhc5OV32dxra/jcrlu161tt3XncglsvWZ1fhnnzw42X+8IO/POjdvtfiTlUu3hfES9KKuInCETob63C80sVISslO4nxeTqBpdqtk+mGzrtpkEldkgoMkcwNE84ukj6wk0g6ERWV8gm1ihEw2aEHcxGaZcuaReL6OUK6uwGjXTO2reKZTpGt5XqyRBR7wKBD07ipy+JexeRjheQz5aJHS2Ri8e7KTfzOYrxHUra3+Tlbc4jWxTUNxSTu5TUHarJuOXQbOZ6Ps9VLksllaIQCHMlbC/TaZFxBkNk23WoKSRiSxx6fuOj9w+C4RecBebwC6TTq6iet/fLWWlSOJDut431ZzFmpbAX7fQtucA+2sE2Gd8eWbFXPbucJ5OWcuPinEbCh56TqIY95N2vaOfDNJN+qkrIysDWO4s3uytFNLNxd7budDE98jFRZQFJZOMLOVHzG0iCnFhqlVxynZJZQ9OhIawNwaQhmDUpqmXOMcQI3sotdOc7djSPf+8vop4FlNNlwodOi5zowaIgRX64D8v7/v7weiOtVsVLVKWWTJN172M06rTKZRrly24NY7EYAwMDDA4OdmG3881nXzDw/RPsw0PYh+wWhkdGxNnO0A8jDD8dZeC7J3z7+VcM//iUIetumNHRUWz1ep24yL0XipZEVhJEgxEL4ZMA+2MzREWbRAKSJZMTCZSUSlwEZNmJVZbl/3ltriromRMonqFnT7jybmOc++hc+GhpQl57eDx7SOmBqF9N8RORF/CKXjQZTeQ38UnzBONLpDTB6pmn2+zmiPbYPvpiN3MZ1IOXSP/MIr8X47X/griAcijG7c0MqVCwq2/0v9ifAL09qQYTQ6m5AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-3f5da.webp 173w,\n/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-42e8c.webp 345w,\n/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-9925b.webp 589w\"\n          sizes=\"(max-width: 283px) 100vw, 283px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-9ef42.png 173w,\n/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-77645.png 345w,\n/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-778a7.png 589w\"\n          sizes=\"(max-width: 283px) 100vw, 283px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-778a7.png\"\n          alt=\"complex split\"\n          title=\"\"\n          src=\"/static/complex_split-a7178924e4031aa46ea11d8d68afe93f-778a7.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  \n  </a>\n    </p>\n<p class=\"code-header\">Multi-Split(Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">run <span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    Split<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n      AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n        AgentC<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>The sequence on which actions will be processed in this case is</p>\n<ol>\n<li>AgentA process action1,</li>\n<li>AgentB and AgentC process action1</li>\n<li>AgentB process action2</li>\n<li>AgentA process action2 (having received messages from both AgentB and AgentC)</li>\n</ol>\n<div class=\"ui segment warning message\">\nIn all the examples above, <b>doAction</b> includes sending a message to the next agent in the sequence\n</div>\n<div class=\"ui segment info message\">\n<h4>Best Practice</h4>\nIn cases where there are sequences inside splits, or splits inside splits, the model will be a lot easier to work with if sequences and splits were created as variables\n</div>\n<p class=\"code-header\">(Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">// nested sequence removed and created as a variable</span>\n<span class=\"token keyword\">private</span> Sequence agentCActions <span class=\"token operator\">=</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    \tAgentC<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\">// main sequence is now easier to read</span>\nrun <span class=\"token punctuation\">(</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    Split<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n      AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      agentCActions\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>It is possible to compose <code class=\"language-text\">sequences</code> and <code class=\"language-text\">actions</code> to create the complex sequences as needed. Example of more complex <code class=\"language-text\">sequence</code> - with a sequence inside a <code class=\"language-text\">sequence</code>.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-c930c.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 446px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 82.45425188374597%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAABcSAAAXEgFnn9JSAAACn0lEQVQ4y31Ua1faQBDl/3/rx74+WK3gC2khyQJ6REAQrAkUFUXJAwyvhEewEpCQ2wFqKcXDnnOT3bszszt3dtfjui4mk8kKiMboqQdLz6FXy8Gq52HVJNhtnebxps8UHqxrAwsNmUGXBTS0CFpVAValsNbFo+s6stksJEmCKIrLuBSRSacRDwk48fmROjtDJkO2+TwuxTfsCR5VVRGLxZCMJxBjUSSTyWWkUkhSoATNp6k/DX7sO0AqmSCf+Nwmkfhrv5zyyFmbvqlFZxIYahQdPYph63415amQjuNgPBph2LFmfccZzwRebg4V5icMOQPj/pwCing2H1cDuq898h8Z/YX7eAxBYPDu7GFnexfeL17s7n/D1ocNbLx7j529AHxfid+c8n5se31oNhsUcOJi1NUxaD6ge/UDtinTuI7pQma9Bv1BhCYlIZ8doSaLaOkqTKOJWlmCJiaIP57xdaWEl5cxaUip1YoMtwUflLsA5Nt9VAv87BxiaMHQGJqkV6cZg6kzDI0H4m0YlTAFj6LdPJkdp+f69Tzl6cfuttGllTvlEqxGBf1Wg9ZxocoycpkksoxH+sAPKRNHIS+hTHz+IoWswCHtJ/48TuMLDGybUnbdhW59e9Gn4pyenoIjHQWegQ/yCNOxCnr3cfhpE0yIgA8RH+LBIlFwHA/TNOcaTib/V9lZrfL4GcOuhF+NLAb1LEZ9CW7/jSovjf7Z4Uqz+6jeRiGTvpUrBu2WoaNdrwYsFosIBALgvgdx8HEDoVCIts8twAvE8eDohrDwEYJ0BQ8/b0FgYeK5ZVuCp9frQVEUaJoGrVKZ//9AKZeh3ORRSiVwHQ5DvslBKd1Bq1ahauqS7SvWvjbuU5teGYbHioD6Y4SOD0Nfv1r72vwGunmKMUFohMEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-da36b.webp 173w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-3da41.webp 345w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-c4f72.webp 690w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-f3ce9.webp 929w\"\n          sizes=\"(max-width: 446px) 100vw, 446px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-2df04.png 173w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-d609e.png 345w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-dc0b2.png 690w,\n/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-c930c.png 929w\"\n          sizes=\"(max-width: 446px) 100vw, 446px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-dc0b2.png\"\n          alt=\"splitception\"\n          title=\"\"\n          src=\"/static/splitception-b58f9d2ea8c30600d7e20ca0206f94f9-dc0b2.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  \n  </a>\n    </p>\n<p class=\"code-header\">Complex Split (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">private</span> Sequence subSequence <span class=\"token operator\">=</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    Split<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n      AgentC<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      AgentA<span class=\"token punctuation\">.</span><span class=\"token function\">doAction2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    AgentD<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nrun <span class=\"token punctuation\">(</span>\n  Sequence<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n    Split<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>\n      subSequence<span class=\"token punctuation\">,</span>\n      AgentB<span class=\"token punctuation\">.</span><span class=\"token function\">doAction1</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"executing-actions-and-code-at-set-times\"><a href=\"#executing-actions-and-code-at-set-times\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Executing Actions and Code at Set Times</h2>\n<p>In conjunction with the <code class=\"language-text\">@ModelSettings</code> annotation referred to <a href=\":version/reference/modelling/annotations\">here</a> you can specify a 'kickoff' and 'end' time. This allows you to make usage of a set of functions to manage your sequencing of actions.</p>\n<ul>\n<li>firstStep(Sections ...) works exactly the same as <code class=\"language-text\">run()</code> however this will only execute on the first tick.</li>\n<li>lastStep(Sections ...) works exactly the same as <code class=\"language-text\">run()</code> however this will only execute on the last tick as defined by the <code class=\"language-text\">end</code> annotation in <code class=\"language-text\">@ModelSettings</code></li>\n<li>kickOff(Sections ...) works exactly the same as <code class=\"language-text\">run()</code> however this will only execute on the kickoff tick as defined by the <code class=\"language-text\">kickoff</code> annotation in <code class=\"language-text\">@ModelSettings</code></li>\n<li>done() this is an optional function within the lifecycle that will be called either once the model has reached the end if specified or if the <code class=\"language-text\">finish()</code> function has been called. Unlike the above this function is overwritten and not contained within the <code class=\"language-text\">step</code> function.</li>\n</ul>\n<p>With this you can easily setup a model flow that will make for a more readable and understandable sequencing of actions as demonstrated below.</p>\n<p class=\"code-header\">Complex Time Control (Java)</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token annotation punctuation\">@Override</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">step</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">super</span><span class=\"token punctuation\">.</span><span class=\"token function\">step</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token function\">firstStep</span><span class=\"token punctuation\">(</span>\n\t\tAgentA<span class=\"token punctuation\">.</span><span class=\"token function\">startupAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> \n\t\tAgentB<span class=\"token punctuation\">.</span><span class=\"token function\">startupAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token function\">kickOff</span><span class=\"token punctuation\">(</span>\n\t\tAgentA<span class=\"token punctuation\">.</span><span class=\"token function\">kickOffAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> \n\t\tAgentB<span class=\"token punctuation\">.</span><span class=\"token function\">kickOffAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token function\">run</span><span class=\"token punctuation\">(</span>\n\t\tAgentA<span class=\"token punctuation\">.</span><span class=\"token function\">sendMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> \n\t\tAgentB<span class=\"token punctuation\">.</span><span class=\"token function\">recieveMessageAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token function\">lastStep</span><span class=\"token punctuation\">(</span>\n\t\tAgentA<span class=\"token punctuation\">.</span><span class=\"token function\">finalAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> \n\t\tAgentB<span class=\"token punctuation\">.</span><span class=\"token function\">finalAction</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token annotation punctuation\">@Override</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">done</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">super</span><span class=\"token punctuation\">.</span><span class=\"token function\">done</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n\t<span class=\"token comment\">// execute Java code here</span>\n\t<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>While first/last and set kickoff times are made available, you are also able to get the current tick and write any additional checks during a standard <code class=\"language-text\">run()</code> action if your model has additional actions that require a specific timing.</p>","headings":[{"value":"Executing Action in Sequences","depth":2},{"value":"Executing Action in Parallel","depth":2},{"value":"Executing Actions and Code at Set Times","depth":2}],"frontmatter":{"title":"Actions & Sequencing","toc":null,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.6/reference/modelling/actions.md","versioned":false,"version":"2.6","kind":"reference","pagePath":"/reference/modelling/actions","chronology":{"prev":{"name":"Determinism","path":"/reference/modelling/determinism"},"next":{"name":"Messaging","path":"/reference/modelling/messaging"}},"lastUpdated":"2026-04-21T13:56:54.869Z"}}