<%@ page import="com.atlassian.jira.ManagerFactory, com.opensymphony.workflow.spi.WorkflowStore, com.opensymphony.workflow.FactoryException, com.opensymphony.workflow.basic.BasicWorkflow, java.util.List, java.util.Iterator, java.io.PrintWriter, java.io.IOException, java.util.Map, java.util.Collection, com.opensymphony.workflow.Condition, com.opensymphony.util.TextUtils, com.opensymphony.workflow.loader.*"%> <% // WorkflowStore store = ManagerFactory.getWorkflowManager().getStore(); try { BasicWorkflow workflow = new BasicWorkflow("mike@atlassian.com"); String[] workflowNames = workflow.getWorkflowNames(); for (int i = 0; i < workflowNames.length; i++) { String workflowName = workflowNames[i]; %>

Workflow: <%= workflowName %>

<%! static WorkflowDescriptor descriptor = null; %> <% descriptor = workflow.getWorkflowDescriptor(workflowName); %>

Initial Actions

<% printActions(out, descriptor.getInitialActions()); %>

Global Actions

<% printActions(out, descriptor.getGlobalActions()); %>

Steps

<% printSteps(out, descriptor.getSteps()); %> <% } } catch (Exception e) { out.println(e.toString()); } %> <%! public void printSteps(JspWriter out, Collection steps) throws IOException { for (Iterator iterator = steps.iterator(); iterator.hasNext();) { StepDescriptor step = (StepDescriptor) iterator.next(); out.println("
"); out.println("

" + step.getName() + "  (id: " + step.getId() + ")

"); printActions(out, step.getActions()); out.println("
"); } } public void printActions(JspWriter out, Collection actions) throws IOException { for (Iterator iterator = actions.iterator(); iterator.hasNext();) { ActionDescriptor actionDescriptor = (ActionDescriptor) iterator.next(); printAction(out, actionDescriptor); } } public void printAction(JspWriter out, ActionDescriptor action) throws IOException { out.println("
"); out.println("

" + action.getName() + "  (id: " + action.getId() + ")

"); out.println("View: " + TextUtils.noNull(action.getView(), "none set") + "
"); // out.println("Auto execute? " + (action.getAutoExecute() ? "TRUE" : "FALSE") + "
"); RestrictionDescriptor restriction = action.getRestriction(); if (restriction == null) { out.println("Restrictor:
"); out.println("
"); out.println("None
"); } else { ConditionsDescriptor conditionsDescriptor = restriction.getConditionsDescriptor(); out.println("Restrictor   (type: " + conditionsDescriptor.getType() + ")
"); out.println("
"); List conditions = conditionsDescriptor.getConditions(); for (Iterator iterator = conditions.iterator(); iterator.hasNext();) { ConditionDescriptor condition = (ConditionDescriptor) iterator.next(); printCondition(out, condition); } } out.println("
"); ResultDescriptor unconditionalResult = action.getUnconditionalResult(); printResult(out, unconditionalResult); out.println("
"); } public void printCondition(JspWriter out, ConditionDescriptor condition) throws IOException { out.println("
"); out.println("
Name: " + TextUtils.noNull(condition.getName(), "none set")); out.println("  (type: " + condition.getType() + ")
"); printArgs(out, condition.getArgs()); out.println("
"); } public void printResult(JspWriter out, ResultDescriptor result) throws IOException { out.println("
"); StepDescriptor targetStep = descriptor.getStep(result.getStep()); out.println("
RESULT: " + TextUtils.noNull(targetStep.getName(), "none set")); out.println("  (id: " + result.getStep() + ")
"); if (result.getPreFunctions().size() > 0) { out.println("

Pre Functions

"); printFunctions(out, result.getPreFunctions()); } if (result.getPostFunctions().size() > 0) { out.println("

Post Functions

"); printFunctions(out, result.getPostFunctions()); } out.println("
"); } public void printFunctions(JspWriter out, List functions) throws IOException { for (Iterator iterator = functions.iterator(); iterator.hasNext();) { FunctionDescriptor functionDescriptor = (FunctionDescriptor) iterator.next(); printFunction(out, functionDescriptor); } } public void printFunction(JspWriter out, FunctionDescriptor function) throws IOException { out.println("
"); out.println("
Name: " + TextUtils.noNull(function.getName(), "none set")); out.println("  (type: " + function.getType() + ")
"); printArgs(out, function.getArgs()); out.println("
"); } public void printArgs(JspWriter out, Map arguments) throws IOException { out.println(""); for (Iterator iterator = arguments.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); out.println(""); } out.println("
NameValue
" + entry.getKey() + "" + entry.getValue() + "
"); } %>