Difference between revisions of "Workflow Course: Exercise 5"

From OpenKM Documentation
Jump to: navigation, search
(Created page with '== Step 1 - Use process instance objects between tasks == The idea of this exercise is user put some number value at starting workflow and then in next form will be showed the i…')
(No difference)

Revision as of 11:18, 29 April 2013

Step 1 - Use process instance objects between tasks

The idea of this exercise is user put some number value at starting workflow and then in next form will be showed the introduced number multiplied by 3.

For doing it you should:

  • Create two forms with inputs value, one to put the value and other to show the value multiplied by 3.
  • Create a node where get the value introduced, multiply by 3 and store in new object.
  • Create a task where to show the number.
  • Assign task to actor okmAdmin

To store some object in workflow variable map, you should use executionContext.getContextInstance().setVariable("modified", modified);

Remember objects used in forms should extend FormElement. Take a look here http://doxygen.openkm.com/5.1.x/d5/d89/namespacecom_1_1openkm_1_1bean_1_1form.html

Wf5.png

<?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" name="number" />
    <button name="submit" label="Submit" />
  </workflow-form>
  <workflow-form task="task">
  	<input label="number" name="number" data="modified" />
    <button name="submit" label="Submit" />
  </workflow-form>
</workflow-forms>
package com.openkm.workflow.exercise.exercise5;

import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;

import com.openkm.bean.form.Input;

public class NodeAction implements ActionHandler {
	private static final long serialVersionUID = 1L;

	@Override
	public void execute(ExecutionContext executionContext) throws Exception {
		Input number = (Input) executionContext.getContextInstance().getVariable("number");
		int value = 0;
		if (number!=null) {
			value = Integer.valueOf(number.getValue());
		} else {
			value = 0;
		}
		value = value * 3;
		Input modified = new Input();
		modified.setName("modified");
		modified.setLabel("modified");
		modified.setValue(String.valueOf(value*3));
		executionContext.getContextInstance().setVariable("modified", modified);
	}
}