﻿{"id":2802,"date":"2023-10-17T14:53:59","date_gmt":"2023-10-17T09:23:59","guid":{"rendered":"https:\/\/blogs.infosys.com\/infosys-cobalt\/?p=2802"},"modified":"2023-10-17T14:53:59","modified_gmt":"2023-10-17T09:23:59","slug":"intelligent-groovy-rule-set-to-camouflage-action-menu-process-of-oracle-epm-planning-cloud-web-form","status":"publish","type":"post","link":"https:\/\/blogs.infosys.com\/infosys-cobalt\/cloud-applications\/intelligent-groovy-rule-set-to-camouflage-action-menu-process-of-oracle-epm-planning-cloud-web-form.html","title":{"rendered":"Intelligent Groovy Rule Set to camouflage Action menu process of Oracle EPM Planning Cloud Web Form"},"content":{"rendered":"<p>Intelligent Groovy Rule Set to camouflage Action menu process of Oracle EPM Planning Web Form<\/p>\n<p>In Planning Webform, business rules can be triggered by attaching them to the Action menu. If the data is frozen after the approval workflow process, data should not be modified. But EPM Planning doesn\u2019t have a default feature to lock the Action Menu to avoid triggering of rule\/rule set which subsequently triggers the rule\/ruleset to update data in the web form.<\/p>\n<p>Action Menu is an artifact in EPM Planning using which users can perform a specific action in web form on an ad-hoc basis. Users can\u2019t be restricted from running the Action Menu if in case data is approved in the system. To tackle such system limitations, Groovy custom rule\/ruleset could be created by editing rules in the EPM Planning workspace.<\/p>\n<p>Below is the process flow of Groovy Action Menu for gathering intelligence from webform and accordingly taking action:<\/p>\n<p>&nbsp;<\/p>\n<p>Create Groovy Rule-&gt; Add Groovy Rule in Rule Set -&gt; Add Ruleset in Action menu-&gt; Add Groovy Action Menu in Webform-&gt; Execute Action Menu on WebForm<\/p>\n<p>&nbsp;<\/p>\n<p>Steps involved for gathering intelligence using Groovy Action Menu:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Create Groovy Business Rule in EPM workspace \u2013<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2804 size-full\" src=\"https:\/\/blogs.infosys.com\/infosys-cobalt\/core\/uploads\/2023\/06\/Groovy-2.png\" alt=\"\" width=\"626\" height=\"140\" \/><\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Add Groovy Rules in Ruleset to run multiple rules one after another \u2013<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2805 size-full\" src=\"https:\/\/blogs.infosys.com\/infosys-cobalt\/core\/uploads\/2023\/06\/Groovy-3.png\" alt=\"\" width=\"151\" height=\"39\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Create Action Menu and add ruleset in it \u2013<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2806 size-full\" src=\"https:\/\/blogs.infosys.com\/infosys-cobalt\/core\/uploads\/2023\/06\/Groovy-4.png\" alt=\"\" width=\"412\" height=\"430\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Add Action menu in webform \u2013<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Run Action Menu on webform \u2013<\/p>\n<p>&nbsp;<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Approval Workflow process for data \u2013<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2809 size-full\" src=\"https:\/\/blogs.infosys.com\/infosys-cobalt\/core\/uploads\/2023\/06\/Groovy-7.png\" alt=\"\" width=\"626\" height=\"345\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Groovy Ruleset will take decision whether data is freeze or not &#8211;<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 If freeze, don\u2019t act by exiting the rule<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 If not freeze, perform adhoc action requested by user<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2810 size-full\" src=\"https:\/\/blogs.infosys.com\/infosys-cobalt\/core\/uploads\/2023\/06\/Groovy-8.png\" alt=\"\" width=\"296\" height=\"124\" \/><\/p>\n<p>Below is the logic to gather intelligence on whether data is freeze or not :<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Check how many cells are in read-only mode and store it into count variable &#8211;<\/p>\n<p>&nbsp;<\/p>\n<p>int icount;<\/p>\n<p>operation.grid.dataCellIterator(&#8220;Percentage(%)&#8221;).each {<\/p>\n<p>if(it.isReadOnly())<\/p>\n<p>{<\/p>\n<p>icount++;<\/p>\n<p>&nbsp;<\/p>\n<p>}<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 If count of read-only is equal or more than specified number , form is freeze else available for modification &#8211;<\/p>\n<p>IF (&#8220;Percentage(%)&#8221;&gt;=0)<\/p>\n<p>@RETURN(&#8220;Form is frozen and modifications are not allowed&#8221; ,ERROR);<\/p>\n<p>ENDIF<\/p>\n<p>Benefits \u2013<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 This custom solution is use to tackle limitations of Action menu which can be reused in other Planning processes<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Groovy Rule editor is freely available in Planning Business rule editor<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Groovy rule is easy to maintain and develop<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Saves client budget from purchasing additional tools to handle limitations of default system functionalities<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Use for close-process or locking the forms from modifications<\/p>\n<p>&nbsp;<\/p>\n<p>Reference(s) &#8211;<\/p>\n<p>https:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/cloud\/epm\/Groovy\/Introduction\/index.html<\/p>\n<p>https:\/\/blogs.oracle.com\/proactivesupportepm\/post\/groovy-best-practices<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intelligent Groovy Rule Set to camouflage Action menu process of Oracle EPM Planning Web [&hellip;]<\/p>\n","protected":false},"author":411,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[11,7,69,71],"tags":[303,300,301,302],"coauthors":[262],"class_list":["post-2802","post","type-post","status-publish","format-standard","hentry","category-cloud-analytics","category-cloud-applications","category-oracle","category-oracle-saas-cloud","tag-groovy-rules","tag-oracle-epm","tag-planning-cloud","tag-planning-web-forms"],"acf":[],"_links":{"self":[{"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/posts\/2802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/comments?post=2802"}],"version-history":[{"count":10,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/posts\/2802\/revisions"}],"predecessor-version":[{"id":3366,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/posts\/2802\/revisions\/3366"}],"wp:attachment":[{"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/media?parent=2802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/categories?post=2802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/tags?post=2802"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.infosys.com\/infosys-cobalt\/wp-json\/wp\/v2\/coauthors?post=2802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}