Examples: Advanced

From OpenKM Documentation
Revision as of 16:59, 15 March 2010 by Pavila (talk | contribs) (Form definition)

Jump to: navigation, search

Download and test this process definition: File:Advanced.par.

Process image

Workflow example advanced.png

Process definition

<?xml version="1.0" encoding="UTF-8"?>
<process-definition  xmlns="urn:jbpm.org:jpdl-3.2"  name="advanced">
  <start-state name="start">
    <transition to="task-node"></transition>
  </start-state>

  <task-node name="task-node">
    <task name="guess_a_number">
      <assignment actor-id="monkiki"></assignment>
      <event type="task-create">
        <script>taskInstance.start();</script>
      </event>
    </task>
    <transition to="decision"></transition>
  </task-node>

  <decision name="decision">
    <handler class="com.openkm.VerifyNumber"></handler>
      <transition to="task-node" name="no"></transition>
      <transition to="end" name="yes"></transition>
    </decision>

  <end-state name="end"></end-state>
</process-definition>

Process handlers

package com.openkm;

import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.node.DecisionHandler;

public class VerifyNumber implements DecisionHandler {
  private static final long serialVersionUID = 1L;

  @Override
  public String decide(ExecutionContext executionContext) throws Exception {
    String numberStr = (String) executionContext.getContextInstance().getVariable("number");
    String guessStr = (String) executionContext.getContextInstance().getVariable("guess");
    Integer number;

    if (numberStr != null) number = Integer.valueOf(numberStr); else number = 10;
    Integer guess = Integer.valueOf(guessStr);
		
    if (guess > number) {
      System.out.println("Too high!");
      return "no";
    } else if (guess < number) {
      System.out.println("Too low!");
      return "no";
    } else {
      System.out.println("Great!");
      return "yes";
    }
  }
}

Form definition

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Forms PUBLIC "-//OpenKM//DTD 1.0//EN"
                       "https://openkm.svn.sourceforge.net/svnroot/openkm/trunk/openkm/src/main/resources/forms-1.0.dtd">
<forms>
  <form task="run_config">
    <input label="Number to guess" name="number" />
    <button label="Submit" />
  </form>
  <form task="guess_a_number">
    <input label="Guess" name="guess" />
    <button label="Submit" />
  </form>
</forms>