Package org.springmodules.examples.workflow.osworkflow.service

Source Code of org.springmodules.examples.workflow.osworkflow.service.OsWorkflowDocumentApprovalWorkflow

package org.springmodules.examples.workflow.osworkflow.service;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.workflow.query.Expression;
import com.opensymphony.workflow.query.FieldExpression;
import com.opensymphony.workflow.query.NestedExpression;
import com.opensymphony.workflow.query.WorkflowExpressionQuery;
import com.opensymphony.workflow.spi.Step;
import com.opensymphony.workflow.spi.WorkflowEntry;
import org.springmodules.examples.workflow.osworkflow.model.Comment;
import org.springmodules.examples.workflow.osworkflow.model.Document;
import org.springmodules.workflow.osworkflow.OsWorkflowTemplate;

/**
* @author robh
*/
public class OsWorkflowDocumentApprovalWorkflow implements DocumentApprovalWorkflow {

  public static final String KEY_DOCUMENT = "document";

  public static final String KEY_COMMENTS = "comments";

  private static final int ACTION_UPLOAD = 1;

  private static final int ACTION_APPROVE = 2;

  private static final int ACTION_PASS_BACK = 3;

  private OsWorkflowTemplate template;

  public void setTemplate(OsWorkflowTemplate template) {
    this.template = template;
  }

  public void startNewWorkflow() {
    template.initialize();
  }

  public void uploadDocument(Document document) {
    template.doAction(ACTION_UPLOAD, KEY_DOCUMENT, document);
  }

  public void passBack(Comment comment) {
    List comments = (List) this.template.getPropertySet().getAsActualType(KEY_COMMENTS);
    if (comments == null) {
      comments = new ArrayList();
    }
    comments.add(comment);
    template.doAction(ACTION_PASS_BACK, KEY_COMMENTS, comments);
  }

  public void approveCurrentDocument() {
    template.doAction(ACTION_APPROVE);
  }

  public List getCurrentStepDescriptors() {
    return this.template.getCurrentStepDescriptors();
  }

  public List getHistoryStepDescriptors() {
    return this.template.getHistoryStepDescriptors();
  }

  public List getAvailableActionDescriptors() {
    return this.template.getAvailableActionDescriptors();
  }

  public String getCurrentState() {
    return ((Step) this.template.getCurrentSteps().get(0)).getStatus();
  }

  public List getUnderwayWorkflows() {
    Expression queryRight = new FieldExpression(FieldExpression.STATE,
            FieldExpression.ENTRY,
            FieldExpression.EQUALS,
            new Integer(WorkflowEntry.ACTIVATED));

    Expression queryLeft = new FieldExpression(FieldExpression.NAME,
            FieldExpression.ENTRY,
            FieldExpression.EQUALS,
            this.template.getWorkflowName());

    WorkflowExpressionQuery query = new WorkflowExpressionQuery(
            new NestedExpression(new Expression[]{queryRight, queryLeft}, NestedExpression.AND));

    return this.template.query(query);
  }

  public Document getCurrentDocument() {
    return (Document) template.getPropertySet().getAsActualType(KEY_DOCUMENT);
  }

  public List getCurrentComments() {
    return (List) template.getPropertySet().getAsActualType(KEY_COMMENTS);
  }
}
TOP

Related Classes of org.springmodules.examples.workflow.osworkflow.service.OsWorkflowDocumentApprovalWorkflow

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.