Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
minLevel1
maxLevel6
outlinefalse
typeflat
separatorpipe
printablefalse

Overview

You can use the Comala Workflows Document Management API Services to request and manipulate State, Tasks, Approval, and Document Activity information.

Info

You need to set up your project and environment go be able to use the Workflow API Services

Usage

The available API Services are divided in four groupsthe following:

  • State Services

    • → Retrieve current status-related information as well as perform actions over the current state

  • Task Services

    • → Retrieve tasks and perform task-related actions given a task and a piece of content

  • Approval Services

    • → Perform approval-related actions given an approval name and a piece of content

  • Workflow Services

    DocumentActivityService

    • → Retrieve workflows and perform workflow-related actions

  • Workflow Configuration Service

    • → Retrieve and modify global and space-level workflow configuration settings

  • Document Activity Service

    • → Retrieve document activity entries of groups of pages or whole spaces

  • Approval Stats Service

    • → Actions to retrieve Approval and Approver-related statistics

  • State Stats Service

    • → Actions to retrieve State-related statistics

Access the full Javadoc documentation for the API services here

Service objects

The service objects have to be imported in your atlassian-plugin.xml:

Code Block
languagexmlthemeRDark
<component-import name="Comala Workflows API" key="workflowService" interface="com.comalatech.workflow.WorkflowService"/>
<component-import name="Comala State Services" key="stateService" interface="com.comalatech.workflow.StateService"/>
<component-import name="Comala Tasks Services" key="taskService" interface="com.comalatech.workflow.TaskService"/>
<component-import name="Comala Approvals Services" key="approvalService" interface="com.comalatech.workflow.ApprovalService"/>
<component-import name="Workflow Configuration Service" key="workflowConfigurationService" interface="com.comalatech.workflow.WorkflowConfigurationService"/>
<component-import name="Comala Document Activity API" key="documentActivitySevice" interface="com.comalatech.workflow.DocumentActivityService"/>
<component-import name="Approval Stats Service" key="approvalStatsService" interface="com.comalatech.workflow.statistics.ApprovalStatsService"/>
<component-import name="State Stats Service" key="stateStatsService" interface="com.comalatech.workflow.statistics.StateStatsService"/>

Services import

The services can then be imported by your plugin modules:

Code Block
theme
languagejavaRDark
public class ShowStateMacro extends BaseMacro {

    private PageManager pageManager;

    private StateService stateService;

    public boolean hasBody() {
        return false;
    }

    public RenderMode getBodyRenderMode() {
        return RenderMode.NO_RENDER;
    }

    public String execute(Map parameters, String body, RenderContext renderContext) throws MacroException {
        AbstractPage page = (AbstractPage) ((PageContext)renderContext).getEntity();
        boolean isPublishedState = "releaseview".equalsIgnoreCase(ActionContext.getContext().getName());
        
        State state;
        if (isPublishedState) {
            state = stateService.getPublishedState(page);
        } else {
            state = stateService.getCurrentState(page);
        } if (state == null) {
            throw new MacroException("page does not have published state"); 
        }
        Map<String,Object> contextMap = MacroUtils.defaultVelocityContext();
        contextMap.put("state",state);
        contextMap.put("page",page);
        contextMap.put("pageManger",pageManager);
        return VelocityUtils.getRenderedTemplate("templates/com/comalatech/confluence/workflowutils/state.vm", contextMap);
    }

    public void setStateService(StateService stateService) {
        this.stateService = stateService;
    }

    public void setPageManager(PageManager pageManager) {
        this.pageManager = pageManager;
    }
}

Atlassian spring scanner

If using Atlassian spring scanner, then skip component-imports in atlassian-plugin.xml and use annotations @ComponentImport  right inside your plugin component:

Code Block
languagejava
themeRDark
@ComponentImport
private WorkflowService workflowService;

...