<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Dynamically setting condition expression has no effect in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200768#M153898</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Could you elaborate a bit with some example process/code. Im quite interested in how you've done it&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 30 Aug 2014 17:51:29 GMT</pubDate>
    <dc:creator>jbarrez</dc:creator>
    <dc:date>2014-08-30T17:51:29Z</dc:date>
    <item>
      <title>Dynamically setting condition expression has no effect</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200766#M153896</link>
      <description>I would like to be able to set the condition expression for a sequence flow dynamically without redeploying anything.(inspired by this: http://stacktrace.be/blog/2013/03/dynamic-process-creation-and-deployment-in-100-lines/) &amp;lt;!–break–&amp;gt;To keep things simple, the flow has a condition of "${false</description>
      <pubDate>Fri, 22 Aug 2014 15:37:46 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200766#M153896</guid>
      <dc:creator>edmundjohnson</dc:creator>
      <dc:date>2014-08-22T15:37:46Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically setting condition expression has no effect</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200767#M153897</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found a workaround, which was to:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- Read in the UEL condition as a config parameter.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- Evaluate the UEL in the service task Java code, as described here:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;A href="http://stackoverflow.com/questions/17026863/java-how-to-evaluate-an-el-expression-standalone-outside-any-web-framework" rel="nofollow noopener noreferrer"&gt;http://stackoverflow.com/questions/17026863/java-how-to-evaluate-an-el-expression-standalone-outside-any-web-framework&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- Set an execution variable based on the outcome of the UEL evaluation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- Make the conditions on the diagram dependent on the value of this execution variable.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Behaviour which can be configured at run-time without redeploy or restart is now possible!&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Aug 2014 10:53:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200767#M153897</guid>
      <dc:creator>edmundjohnson</dc:creator>
      <dc:date>2014-08-26T10:53:29Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically setting condition expression has no effect</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200768#M153898</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Could you elaborate a bit with some example process/code. Im quite interested in how you've done it&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 30 Aug 2014 17:51:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200768#M153898</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-08-30T17:51:29Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically setting condition expression has no effect</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200769#M153899</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Sure, I'm happy to give something back.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The aim was to implement a task which could determine whether user authorisation was required for a monetary order with the process being able to handle changing business rules.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The gateway from the task now has one default flow and one flow with a static condition of:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; ${nextState == "AUTHORIZATION_REQUIRED"}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;At the start of the process, the following execution variables are loaded:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- "model": the data we are processing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- "configParameters": configuration parameters loaded from a database.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The interesting bit is that the business rule to determine whether authorisation is required is the value of one of the configuration parameters, and is written in expression language.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is evaluated as follows (I have simplified):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import de.odysseus.el.ExpressionFactoryImpl;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import de.odysseus.el.util.SimpleContext;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import javax.el.ExpressionFactory;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import javax.el.ValueExpression;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// etc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String conditionAuthRequired = configParameters.getString("decisionAuthorisationRequired");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (evaluateUELBoolean(conditionAuthRequired, model, configParameters)) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextState = "AUTHORIZATION_REQUIRED";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextState = "AUTHORIZATION_NOT_REQUIRED";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static boolean evaluateUELBoolean(String strExpression, Model model, ConfigParameters configParameters) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExpressionFactory factory = new ExpressionFactoryImpl();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleContext context = new SimpleContext();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Supply the values for model and configParameters to the expression before it is evaluated&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.setVariable("model", factory.createValueExpression(model, Model.class));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.setVariable("configParameters", factory.createValueExpression(configParameters, ConfigParameters.class));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueExpression valueExpression = factory.createValueExpression(context, strExpression, Boolean.class);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (Boolean) valueExpression.getValue(context);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It works, though the value of the configuration parameter which contains the business logic could become complex quite quickly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;An example we have is for the value of the "decisionAuthorisationRequired" parameter is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${configParameters.getStringList('scriptsRequiringAuthorization').contains(model.config.action.id)}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;demonstrating that the expression language can reference both the data model and the configuration parameters.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Sep 2014 16:17:05 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200769#M153899</guid>
      <dc:creator>edmundjohnson</dc:creator>
      <dc:date>2014-09-02T16:17:05Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically setting condition expression has no effect</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200770#M153900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;That is pretty cool stuff, very resourceful!&amp;nbsp; thanks for sharing&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Sep 2014 09:49:08 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dynamically-setting-condition-expression-has-no-effect/m-p/200770#M153900</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-09-15T09:49:08Z</dc:date>
    </item>
  </channel>
</rss>

