Difference between revisions of "Examples: Advanced"

From OpenKM Documentation
Jump to: navigation, search
(Form definition)
 
(3 intermediate revisions by the same user not shown)
Line 85: Line 85:
 
<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//DTD Workflow Forms 1.1//EN"
+
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.1//EN"
                                 "http://www.openkm.com/dtd/workflow-forms-1.1.dtd">
+
                                 "http://www.openkm.com/dtd/workflow-forms-2.1.dtd">
 
<workflow-forms>
 
<workflow-forms>
 
   <workflow-form task="run_config">
 
   <workflow-form task="run_config">
Line 93: Line 93:
 
   </workflow-form>
 
   </workflow-form>
 
   <workflow-form task="guess_a_number">
 
   <workflow-form task="guess_a_number">
  <input label="Guess" name="guess" />
+
    <input label="Guess" name="guess" />
  <button name="submit" label="Submit" />
+
    <button name="submit" label="Submit" />
 
   </workflow-form>
 
   </workflow-form>
 
</workflow-forms>
 
</workflow-forms>
Line 100: Line 100:
  
 
[[Category: Workflow Guide]]
 
[[Category: Workflow Guide]]
[[Category:OKM Network]]
 

Latest revision as of 11:50, 3 December 2012

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


Nota clasica.png The taks will be assigned to an user called "monkiki" so you need to create this user and log as him to see the task assignment. Also you can assing this task to another user from the process instance workflow administration.

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.sample.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.sample;

import com.openkm.bean.form.Input;

import org.jbpm.graph.exe.Comment;
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 {
    Input numberStr = (Input) executionContext.getContextInstance().getVariable("number");
    Input guessStr = (Input) executionContext.getContextInstance().getVariable("guess");
    System.out.println("numberStr: " + numberStr);
    System.out.println("guessStr: " + numberStr);

    Integer guess = Integer.valueOf(guessStr.getValue());
    Integer number;

    if (numberStr != null && !numberStr.equals("")) {
      number = Integer.valueOf(numberStr.getValue());
    } else {
      number = 10;
    }
	
    if (guess > number) {
      System.out.println("Too high!");
      executionContext.getToken().addComment(new Comment("system", guess + " is too high!"));
      return "no";
    } else if (guess < number) {
      System.out.println("Too low!");
      executionContext.getToken().addComment(new Comment("system", guess + " is too low!"));
      return "no";
    } else {
      System.out.println("Great!");
      executionContext.getToken().addComment(new Comment("system", guess + " is great!"));
      return "yes";
    }
  }
}

Form definition

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.1//EN"
                                "http://www.openkm.com/dtd/workflow-forms-2.1.dtd">
<workflow-forms>
  <workflow-form task="run_config">
    <input label="Number to guess" name="number" />
    <button name="submit" label="Submit" />
  </workflow-form>
  <workflow-form task="guess_a_number">
    <input label="Guess" name="guess" />
    <button name="submit" label="Submit" />
  </workflow-form>
</workflow-forms>