Difference between revisions of "Examples: Advanced"

From OpenKM Documentation
Jump to: navigation, search
(Form definition)
(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 forms PUBLIC "-//OpenKM//DTD 1.0//EN"
+
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//Workflow Forms DTD 1.0//EN"
                      "https://openkm.svn.sourceforge.net/svnroot/openkm/trunk/openkm/src/main/resources/forms-1.0.dtd">
+
                                "http://www.openkm.com/dtd/workflow-forms-1.0.dtd">
<forms>
+
<workflow-forms>
   <form task="run_config">
+
   <workflow-form task="run_config">
 
     <input label="Number to guess" name="number" />
 
     <input label="Number to guess" name="number" />
 
     <button label="Submit" />
 
     <button label="Submit" />
   </form>
+
   </workflow-form>
   <form task="guess_a_number">
+
   <workflow-form task="guess_a_number">
    <input label="Guess" name="guess" />
+
  <input label="Guess" name="guess" />
    <button label="Submit" />
+
  <button label="Submit" />
   </form>
+
   </workflow-form>
</forms>
+
</workflow-forms>
 
</source>
 
</source>
  
 
[[Category: Workflow Guide]]
 
[[Category: Workflow Guide]]
 
[[Category:OKM Network]]
 
[[Category:OKM Network]]

Revision as of 13:05, 31 March 2010

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 workflow-forms PUBLIC "-//OpenKM//Workflow Forms DTD 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>