Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-16053

Optimisation - Avoid multi evaluation of Condition defined for an Workflow Action

    XMLWordPrintable

Details

    • Suggestion
    • Resolution: Won't Fix
    • None
    • None
    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

    Description

      See below a point of improvement of Performances

      Imagine the following Workflow ...

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd">
      <workflow>
      	...
      	<initial-actions>
      		<action id="1" name="Create Issue">...</action>
      	</initial-actions>
      
      	<common-actions>
      
      		<action id="1010" name="Action_1010" view="comment">
      			...
      			<restrict-to>
      				<conditions>
      					<condition type="class">
      						<arg name="class.name">com.atlassian.jira.workflow.condition.AnyCondition</arg>
      					</condition>
      				</conditions>
      			</restrict-to>
      			...
      		</action>
      
      		<action id="1020" name="Action_1020" view="comment">
      			...
      			<restrict-to>
      				<conditions>
      					<condition type="class">
      						<arg name="class.name">com.atlassian.jira.workflow.condition.AnyCondition</arg>
      					</condition>
      				</conditions>
      			</restrict-to>
      			...
      		</action>
      
      		<action id="1030" name="Action_1030" view="comment">
      			...
      			<restrict-to>
      				<conditions>
      					<condition type="class">
      						<arg name="class.name">com.atlassian.jira.workflow.condition.AnyCondition</arg>
      					</condition>
      				</conditions>
      			</restrict-to>
      			...
      		</action>
      	</common-actions>
      
      	<steps>
      		<step id="1" name="In Progress">
      			...
      			<actions>
      				<common-action id="10" />
      				<common-action id="20" />
      				<common-action id="30" />
      			</actions>
      		</step>
      		...
      	</steps>
      </workflow>

      In previous exemple, the com.atlassian.jira.workflow.condition.AnyCondition is evaluate 4 times.

      1. In Velocity Context preparation
        IssueSummaryWebComponent.getHtml(IssueSummaryLayoutBean layout, Issue issue, User remoteUser)
        ...params.put("availableActions", getAvailableActions(issue));
      1. For each iterations in Velocity Template (templates/jira/issue/summary/issuesummary.vm)
        $summaryComponent.isLazyDecoratable($issue, $action.value)
        ...IssueUtilsBean.isValidAction(Issue issue, int action)
        ......IssueUtilsBean.loadAvailableActions(Issue issueObject)

      When Workflow became more complexe (i.e 3 Transitions from a Step with at least 3 conditions per Transition), and also with more complex conditions, the time allocated to conditions's evaluation is not trivial.

      Rgsd
      Vincent

      Attachments

        Activity

          People

            Unassigned Unassigned
            5d77aaa81033 Vincent Thoulé
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: