/**
*
*/
package net.conselldemallorca.helium.jbpm3.command;
import java.util.Map;
import org.jbpm.JbpmContext;
import org.jbpm.command.AbstractBaseCommand;
import org.jbpm.taskmgmt.exe.TaskInstance;
/**
* Command per a guardar variables a dins una instància de tasca
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class SaveTaskInstanceVariablesCommand extends AbstractBaseCommand {
private static final long serialVersionUID = -1908847549444051495L;
private long id;
private Map<String, Object> variables;
private boolean locally = false;
private boolean deleteFirst = false;
public SaveTaskInstanceVariablesCommand(
long id,
Map<String, Object> variables) {
super();
this.id = id;
this.variables = variables;
}
public Object execute(JbpmContext jbpmContext) throws Exception {
TaskInstance taskInstance = jbpmContext.getTaskInstance(id);
if (deleteFirst) {
for (String key: variables.keySet()) {
if (locally)
taskInstance.deleteVariableLocally(key);
else
taskInstance.deleteVariable(key);
}
}
for (String key: variables.keySet()) {
if (locally)
taskInstance.setVariableLocally(
key,
variables.get(key));
else
taskInstance.setVariable(
key,
variables.get(key));
}
return taskInstance;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public boolean isLocally() {
return locally;
}
public void setLocally(boolean locally) {
this.locally = locally;
}
public boolean isDeleteFirst() {
return deleteFirst;
}
public void setDeleteFirst(boolean deleteFirst) {
this.deleteFirst = deleteFirst;
}
public Map<String, Object> getVariables() {
return variables;
}
public void setVariables(Map<String, Object> variables) {
this.variables = variables;
}
@Override
public String getAdditionalToStringInformation() {
return "id=" + id;
}
}