Skip to content

Commit

Permalink
Merge pull request #54 from orchitech/feature-2
Browse files Browse the repository at this point in the history
 Fetching of activiti process instance variables (#2)
  • Loading branch information
Kortanul committed Dec 15, 2018
2 parents 4e6e470 + 312eeb4 commit 21282ab
Showing 1 changed file with 25 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.activiti.bpmn.model.BpmnModel;
Expand All @@ -37,6 +38,7 @@
import org.activiti.engine.history.HistoricProcessInstanceQuery;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.history.HistoricVariableInstance;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.bpmn.diagram.ProcessDiagramGenerator;
import org.activiti.engine.impl.identity.Authentication;
Expand Down Expand Up @@ -214,6 +216,7 @@ public Promise<QueryResponse, ResourceException> queryCollection(
JsonValue value = json(mapper.convertValue(i, Map.class));
// TODO OPENIDM-3603 add relationship support
value.put(ActivitiConstants.ACTIVITI_PROCESSDEFINITIONRESOURCENAME, getProcessDefName(i));
value.put(ActivitiConstants.ACTIVITI_PROCESSVARIABLES, getProcessVariables(i.getId()));
ResourceResponse r = newResourceResponse(i.getId(), null, value);
handler.handleResource(r);
}
Expand All @@ -225,6 +228,7 @@ public Promise<QueryResponse, ResourceException> queryCollection(
JsonValue value = json(mapper.convertValue(processinstance, Map.class));
// TODO OPENIDM-3603 add relationship support
value.put(ActivitiConstants.ACTIVITI_PROCESSDEFINITIONRESOURCENAME, getProcessDefName(processinstance));
value.put(ActivitiConstants.ACTIVITI_PROCESSVARIABLES, getProcessVariables(processinstance.getId()));
handler.handleResource(newResourceResponse(processinstance.getId(), null, value));
}
return newQueryResponse().asPromise();
Expand All @@ -250,7 +254,7 @@ public Promise<ResourceResponse, ResourceException> readInstance(Context context
// TODO OPENIDM-3603 add relationship support
content.put(ActivitiConstants.ACTIVITI_PROCESSDEFINITIONRESOURCENAME, getProcessDefName(instance));
content.put("tasks", getTasksForProcess(instance.getId()).getObject());

content.put(ActivitiConstants.ACTIVITI_PROCESSVARIABLES, getProcessVariables(instance.getId()));
// diagram support
if (request.getFields().contains(ActivitiConstants.ACTIVITI_DIAGRAM)) {
final RuntimeService runtimeService = processEngine.getRuntimeService();
Expand Down Expand Up @@ -428,6 +432,26 @@ private Date parseDate(String value) {
return null;
}

/**
* Get map with process variables for process instance with specified identifier.
* {@link ActivitiConstants#OPENIDM_CONTEXT} will not be returned.
* @param id Process instance identifier to get variables to. Never null.
* @return Map with process variables. Never null.
*/
private Map<String, Object> getProcessVariables(String id) {
Map<String, Object> result = new HashMap<>();
// Resolve process variables for process instance with specified ID
List<HistoricVariableInstance> variables = processEngine.getHistoryService().
createHistoricVariableInstanceQuery().processInstanceId(id).list();
for (HistoricVariableInstance variable : variables) {
String name = variable.getVariableName();
if (!ActivitiConstants.OPENIDM_CONTEXT.equals(name)) { // Remove useless OPENIDM_CONTEXT
result.put(name, variable.getValue());
}
}
return result;
}

/**
* Returns the name of the process instance definition.
*
Expand Down

0 comments on commit 21282ab

Please sign in to comment.