Difference between revisions of "Examples: Advanced"

From OpenKM Documentation
Jump to: navigation, search
(Form definition)
Line 70: Line 70:
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//Workflow Forms DTD 1.0//EN"
+
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 1.0//EN"
 
                                 "http://www.openkm.com/dtd/workflow-forms-1.0.dtd">
 
                                 "http://www.openkm.com/dtd/workflow-forms-1.0.dtd">
 
<workflow-forms>
 
<workflow-forms>

Revision as of 08:44, 1 April 2010


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 workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 1.0//EN"
                                "http://www.openkm.com/dtd/workflow-forms-1.0.dtd">
<workflow-forms>
  <workflow-form task="run_config">
    <input label="Number to guess" name="number" />
    <button label="Submit" />
  </workflow-form>
  <workflow-form task="guess_a_number">
    <input label="Guess" name="guess" />
    <button label="Submit" />
  </workflow-form>
</workflow-forms>