use of org.wso2.carbon.bpmn.core.mgt.model.xsd.BPMNInstance in project carbon-business-process by wso2.
the class WorkflowServiceClient method getPaginatedInstanceByFilter.
public BPMNInstance[] getPaginatedInstanceByFilter(boolean finished, String instanceId, String startAfter, String startBefore, String processId, boolean isActive, String variables, int start, int size) {
BPMNInstance[] bpmnInstances = null;
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
Date after = null;
if (startAfter != null && !startAfter.equals("")) {
try {
after = formatter.parse(startAfter);
} catch (ParseException e) {
log.error("Error converting date filter string, ParseException", e);
}
}
Date before = null;
if (startBefore != null && !startBefore.equals("")) {
try {
before = formatter.parse(startBefore);
} catch (ParseException e) {
log.error("Error converting date filter string, ParseException", e);
}
}
try {
bpmnInstances = instanceServiceStub.getPaginatedInstanceByFilter(finished, instanceId, after, before, processId, isActive, variables, start, size);
} catch (RemoteException e) {
log.error("Error getting process list by filter, RemoteException", e);
}
return bpmnInstances;
}
use of org.wso2.carbon.bpmn.core.mgt.model.xsd.BPMNInstance in project carbon-business-process by wso2.
the class BPMNInstanceService method getTenantBPMNInstances.
/**
* Internally used method to get all tenant BPMN instances from a passed instance list
*
* @param instances
* @return list of BPMNInstances
*/
private BPMNInstance[] getTenantBPMNInstances(List<ProcessInstance> instances) {
BPMNInstance bpmnInstance;
Integer tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
List<BPMNInstance> bpmnInstances = new ArrayList<BPMNInstance>();
RuntimeService runtimeService = BPMNServerHolder.getInstance().getEngine().getRuntimeService();
HistoricProcessInstanceQuery query = BPMNServerHolder.getInstance().getEngine().getHistoryService().createHistoricProcessInstanceQuery().processInstanceTenantId(tenantId.toString());
for (ProcessInstance instance : instances) {
bpmnInstance = new BPMNInstance();
bpmnInstance.setInstanceId(instance.getId());
bpmnInstance.setProcessId(instance.getProcessDefinitionId());
bpmnInstance.setSuspended(instance.isSuspended());
bpmnInstance.setStartTime(query.processInstanceId(instance.getId()).singleResult().getStartTime());
bpmnInstance.setVariables(formatVariables(runtimeService.getVariables(instance.getId())));
bpmnInstances.add(bpmnInstance);
}
return bpmnInstances.toArray(new BPMNInstance[bpmnInstances.size()]);
}
use of org.wso2.carbon.bpmn.core.mgt.model.xsd.BPMNInstance in project carbon-business-process by wso2.
the class BPMNInstanceService method getPaginatedInstanceByFilter.
/**
* Returns Paginated Instances by passing filter parameters
*
* @param finished
* @param instanceId
* @param startAfter
* @param startBefore
* @param processId
* @param isActive
* @param variables
* @param start
* @param size
* @return list of BPMNInstances for given filter parameters
*/
public BPMNInstance[] getPaginatedInstanceByFilter(boolean finished, String instanceId, Date startAfter, Date startBefore, String processId, boolean isActive, String variables, int start, int size) {
List<BPMNInstance> bpmnInstanceList = new ArrayList<>();
Integer tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
ProcessEngine engine = BPMNServerHolder.getInstance().getEngine();
RuntimeService runtimeService = engine.getRuntimeService();
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().processInstanceTenantId(tenantId.toString());
HistoricProcessInstanceQuery historicQuery = BPMNServerHolder.getInstance().getEngine().getHistoryService().createHistoricProcessInstanceQuery().processInstanceTenantId(tenantId.toString()).includeProcessVariables();
query = query.includeProcessVariables();
if (finished) {
historicQuery = historicQuery.finished();
if (instanceId != null && !instanceId.equals("")) {
return getInstanceById(instanceId, finished);
}
if (processId != null && !processId.equals("")) {
historicQuery = historicQuery.processDefinitionId(processId);
}
if (variables != null && !variables.trim().equals("")) {
String[] variablePairs = variables.split(",");
BPMNVariable[] bpmnVariables = new BPMNVariable[variablePairs.length];
for (int i = 0; i < variablePairs.length; i++) {
String[] pair = variablePairs[i].split(":");
if (pair.length == 1) {
bpmnVariables[i] = new BPMNVariable(pair[0], "");
} else {
bpmnVariables[i] = new BPMNVariable(pair[0], pair[1]);
}
}
if (variablePairs != null && variablePairs.length > 0) {
for (BPMNVariable variable : bpmnVariables) {
if (variable.getName() != null && !variable.getName().equals("")) {
historicQuery = historicQuery.variableValueLike(variable.getName(), "%" + variable.getValue().toString() + "%");
}
}
}
}
if (startAfter != null) {
historicQuery = historicQuery.startedAfter(startAfter);
}
if (startBefore != null) {
historicQuery = historicQuery.startedBefore(startBefore);
}
processInstanceCount = (int) historicQuery.count();
List<HistoricProcessInstance> instances = historicQuery.listPage(start, size);
for (HistoricProcessInstance instance : instances) {
BPMNInstance bpmnInstance = new BPMNInstance();
bpmnInstance.setInstanceId(instance.getId());
bpmnInstance.setProcessId(instance.getProcessDefinitionId());
List<ProcessDefinition> processes = BPMNServerHolder.getInstance().getEngine().getRepositoryService().createProcessDefinitionQuery().processDefinitionTenantId(tenantId.toString()).processDefinitionId(instance.getProcessDefinitionId()).list();
String processName = instance.getProcessDefinitionId();
if (!processes.isEmpty()) {
processName = processes.get(0).getName();
}
bpmnInstance.setProcessName(processName);
bpmnInstance.setStartTime(instance.getStartTime());
bpmnInstance.setEndTime(instance.getEndTime());
bpmnInstance.setVariables(formatVariables(instance.getProcessVariables()));
bpmnInstanceList.add(bpmnInstance);
}
} else {
historicQuery = historicQuery.unfinished();
if (instanceId != null && !instanceId.equals("")) {
return getInstanceById(instanceId, finished);
}
if (processId != null && !processId.equals("")) {
historicQuery = historicQuery.processDefinitionId(processId);
}
if (variables != null && !variables.trim().equals("")) {
String[] variablePairs = variables.split(",");
BPMNVariable[] bpmnVariables = new BPMNVariable[variablePairs.length];
for (int i = 0; i < variablePairs.length; i++) {
String[] pair = variablePairs[i].split(":");
if (pair.length == 1) {
bpmnVariables[i] = new BPMNVariable(pair[0], "");
} else {
bpmnVariables[i] = new BPMNVariable(pair[0], pair[1]);
}
}
if (variablePairs != null && variablePairs.length > 0) {
for (BPMNVariable variable : bpmnVariables) {
if (variable.getName() != null && !variable.getName().equals("")) {
historicQuery = historicQuery.variableValueLike(variable.getName(), "%" + variable.getValue().toString() + "%");
}
}
}
}
if (startAfter != null) {
historicQuery = historicQuery.startedAfter(startAfter);
}
if (startBefore != null) {
historicQuery = historicQuery.startedBefore(startBefore);
}
processInstanceCount = (int) historicQuery.count();
List<HistoricProcessInstance> instances = historicQuery.listPage(start, size);
for (HistoricProcessInstance instance : instances) {
boolean isSuspended = query.processInstanceId(instance.getId()).list().get(0).isSuspended();
if (isSuspended == !isActive) {
BPMNInstance bpmnInstance = new BPMNInstance();
bpmnInstance.setInstanceId(instance.getId());
bpmnInstance.setProcessId(instance.getProcessDefinitionId());
List<ProcessDefinition> processes = BPMNServerHolder.getInstance().getEngine().getRepositoryService().createProcessDefinitionQuery().processDefinitionTenantId(tenantId.toString()).processDefinitionId(instance.getProcessDefinitionId()).list();
String processName = instance.getProcessDefinitionId();
if (!processes.isEmpty()) {
processName = processes.get(0).getName();
}
bpmnInstance.setProcessName(processName);
if (!query.processInstanceId(instance.getId()).list().isEmpty()) {
bpmnInstance.setSuspended(isSuspended);
}
bpmnInstance.setStartTime(instance.getStartTime());
bpmnInstance.setEndTime(instance.getEndTime());
bpmnInstance.setVariables(formatVariables(instance.getProcessVariables()));
bpmnInstanceList.add(bpmnInstance);
}
}
}
return bpmnInstanceList.toArray(new BPMNInstance[bpmnInstanceList.size()]);
}
use of org.wso2.carbon.bpmn.core.mgt.model.xsd.BPMNInstance in project carbon-business-process by wso2.
the class BPMNInstanceService method getInstanceById.
/**
* Get instances by instance Id and state
*
* @param instanceId
* @param finished
* @return list of BPMNInstances
*/
private BPMNInstance[] getInstanceById(String instanceId, boolean finished) {
List<BPMNInstance> bpmnInstanceList = new ArrayList<>();
Integer tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
ProcessEngine engine = BPMNServerHolder.getInstance().getEngine();
RuntimeService runtimeService = engine.getRuntimeService();
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().processInstanceTenantId(tenantId.toString());
HistoricProcessInstanceQuery historicQuery = BPMNServerHolder.getInstance().getEngine().getHistoryService().createHistoricProcessInstanceQuery().processInstanceTenantId(tenantId.toString()).includeProcessVariables();
query = query.includeProcessVariables();
if (finished) {
historicQuery.finished();
} else {
historicQuery.unfinished();
}
historicQuery = historicQuery.processInstanceId(instanceId);
HistoricProcessInstance instance = historicQuery.singleResult();
if (instance != null) {
processInstanceCount = 1;
BPMNInstance bpmnInstance = new BPMNInstance();
bpmnInstance.setInstanceId(instance.getId());
bpmnInstance.setProcessId(instance.getProcessDefinitionId());
List<ProcessDefinition> processes = BPMNServerHolder.getInstance().getEngine().getRepositoryService().createProcessDefinitionQuery().processDefinitionTenantId(tenantId.toString()).processDefinitionId(instance.getProcessDefinitionId()).list();
String processName = instance.getProcessDefinitionId();
if (!processes.isEmpty()) {
processName = processes.get(0).getName();
}
bpmnInstance.setProcessName(processName);
if (!query.processInstanceId(instance.getId()).list().isEmpty()) {
bpmnInstance.setSuspended(query.processInstanceId(instance.getId()).list().get(0).isSuspended());
}
bpmnInstance.setStartTime(instance.getStartTime());
bpmnInstance.setEndTime(instance.getEndTime());
bpmnInstance.setVariables(formatVariables(instance.getProcessVariables()));
bpmnInstanceList.add(bpmnInstance);
} else {
processInstanceCount = 0;
}
return bpmnInstanceList.toArray(new BPMNInstance[bpmnInstanceList.size()]);
}
Aggregations