%@ 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("");
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("");
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("");
printArgs(out, function.getArgs());
out.println("
");
}
public void printArgs(JspWriter out, Map arguments) throws IOException
{
out.println("| Name | Value |
");
for (Iterator iterator = arguments.entrySet().iterator(); iterator.hasNext();)
{
Map.Entry entry = (Map.Entry) iterator.next();
out.println("| " + entry.getKey() + " | " + entry.getValue() + " |
");
}
out.println("
");
}
%>