{"id":128,"date":"2009-12-08T13:43:43","date_gmt":"2009-12-08T12:43:43","guid":{"rendered":"http:\/\/www.pleus.net\/blog\/?p=128"},"modified":"2010-08-12T23:50:36","modified_gmt":"2010-08-12T21:50:36","slug":"dehydrating-long-running-groovy-dsls","status":"publish","type":"post","link":"https:\/\/www.pleus.net\/blog\/?p=128","title":{"rendered":"Dehydrating long running Groovy DSLs"},"content":{"rendered":"<p>In my recent article about Domain Specific Languages (DSLs) published in the <a href=\"http:\/\/it-republik.de\/jaxenter\/java-magazin-ausgaben\/Domain-Specific-Languages-000330.html\" target=\"_blank\">12\/2009 issue of Javamagazin<\/a> I described how to implement DSLs using Groovy.<br \/>\nIn the article I mentioned that dehydration (state persistence) could be added to the DSL runtime if needed to support long running processes.<br \/>\nI&#8217;ve created a Groovy script <A HREF=\"http:\/\/www.pleus.net\/weblog\/archives\/dehydration.groovy\" target=\"_blank\">dehydration.groovy<\/A> to illustrate how this could be achieved.<br \/>\nBasically the Groovy script is stopped by terminating the executing thread and the state is pulled out.<br \/>\nLater on the state is injected and the remaining part of the script is executed. <br \/>\nThis approach can be used to process any kind of long running scripts, especially if they have to wait for external events.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my recent article about Domain Specific Languages (DSLs) published in the 12\/2009 issue of Javamagazin I described how to implement DSLs using Groovy. In the article I mentioned that dehydration (state persistence) could be added to the DSL runtime if needed to support long running processes. I&#8217;ve created a Groovy script dehydration.groovy to illustrate &hellip; <a href=\"https:\/\/www.pleus.net\/blog\/?p=128\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Dehydrating long running Groovy DSLs<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[11],"class_list":["post-128","post","type-post","status-publish","format-standard","hentry","category-domain-specific-language","tag-groovy"],"_links":{"self":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=128"}],"version-history":[{"count":4,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/128\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}