use of org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl in project jbpm by kiegroup.
the class NotifyParentCaseEventListener method afterProcessCompleted.
@Override
public void afterProcessCompleted(ProcessCompletedEvent event) {
CaseFileInstance caseFile = getCaseFile((KieSession) event.getKieRuntime());
if (caseFile != null) {
String caseId = ((WorkflowProcessInstanceImpl) event.getProcessInstance()).getCorrelationKey();
if (caseFile.getCaseId().equals(caseId)) {
logger.debug("Process instance {} that represents main case instance {} has completed/was aborted, notify parent if exists", event.getProcessInstance().getId(), caseId);
CaseEvent caseEvent = null;
if (event.getProcessInstance().getState() == ProcessInstance.STATE_COMPLETED) {
caseEvent = new CaseCloseEvent(identityProvider.getName(), caseId, caseFile, "");
} else {
caseEvent = new CaseCancelEvent(identityProvider.getName(), caseId, caseFile, Arrays.asList(event.getProcessInstance().getId()));
}
notifyParentOnCompletion(caseEvent);
}
}
}
use of org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl in project jbpm by kiegroup.
the class ProcessInstanceInfo method transform.
public void transform() {
// if (processInstance == null) {
// return;
// }
ByteArrayOutputStream baos = new ByteArrayOutputStream();
boolean variablesChanged = false;
try {
ProcessMarshallerWriteContext context = new ProcessMarshallerWriteContext(baos, null, null, null, null, this.env);
context.setProcessInstanceId(processInstance.getId());
context.setState(processInstance.getState() == ProcessInstance.STATE_ACTIVE ? ProcessMarshallerWriteContext.STATE_ACTIVE : ProcessMarshallerWriteContext.STATE_COMPLETED);
String processType = ((ProcessInstanceImpl) processInstance).getProcess().getType();
saveProcessInstanceType(context, processInstance, processType);
ProcessInstanceMarshaller marshaller = ProcessMarshallerRegistry.INSTANCE.getMarshaller(processType);
Object result = marshaller.writeProcessInstance(context, processInstance);
if (marshaller instanceof ProtobufRuleFlowProcessInstanceMarshaller && result != null) {
JBPMMessages.ProcessInstance _instance = (JBPMMessages.ProcessInstance) result;
PersisterHelper.writeToStreamWithHeader(context, _instance);
}
context.close();
} catch (IOException e) {
throw new IllegalArgumentException("IOException while storing process instance " + processInstance.getId() + ": " + e.getMessage(), e);
}
byte[] newByteArray = baos.toByteArray();
if (variablesChanged || !Arrays.equals(newByteArray, processInstanceByteArray)) {
this.state = processInstance.getState();
this.lastModificationDate = new Date();
this.processInstanceByteArray = newByteArray;
this.eventTypes.clear();
for (String type : processInstance.getEventTypes()) {
eventTypes.add(type);
}
}
if (!processInstance.getProcessId().equals(this.processId)) {
this.processId = processInstance.getProcessId();
}
((WorkflowProcessInstanceImpl) processInstance).setPersisted(true);
}
use of org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl in project jbpm by kiegroup.
the class ProcessInstanceInfo method getProcessInstance.
public ProcessInstance getProcessInstance(InternalKnowledgeRuntime kruntime, Environment env, boolean readOnly) {
this.env = env;
if (processInstance == null) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(processInstanceByteArray);
MarshallerReaderContext context = new MarshallerReaderContext(bais, (InternalKnowledgeBase) kruntime.getKieBase(), null, null, ProtobufMarshaller.TIMER_READERS, this.env);
ProcessInstanceMarshaller marshaller = getMarshallerFromContext(context);
context.wm = ((StatefulKnowledgeSessionImpl) kruntime).getInternalWorkingMemory();
processInstance = marshaller.readProcessInstance(context);
((WorkflowProcessInstanceImpl) processInstance).setPersisted(false);
if (readOnly) {
((WorkflowProcessInstanceImpl) processInstance).disconnect();
}
context.close();
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException("IOException while loading process instance: " + e.getMessage(), e);
}
}
((WorkflowProcessInstanceImpl) processInstance).internalSetStartDate(this.startDate);
return processInstance;
}
use of org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl in project jbpm by kiegroup.
the class JbpmBpmn2TestCase method assertNumOfOutgoingConnections.
public void assertNumOfOutgoingConnections(ProcessInstance process, String nodeName, int num) {
assertNodeExists(process, nodeName);
WorkflowProcessInstanceImpl instance = (WorkflowProcessInstanceImpl) process;
for (Node node : instance.getNodeContainer().getNodes()) {
if (node.getName().equals(nodeName)) {
if (node.getOutgoingConnections().size() != num) {
fail("Expected outgoing connections: " + num + " - found " + node.getOutgoingConnections().size());
} else {
break;
}
}
}
}
use of org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl in project jbpm by kiegroup.
the class JbpmBpmn2TestCase method assertProcessVarExists.
public void assertProcessVarExists(ProcessInstance process, String... processVarNames) {
WorkflowProcessInstanceImpl instance = (WorkflowProcessInstanceImpl) process;
List<String> names = new ArrayList<String>();
for (String nodeName : processVarNames) {
names.add(nodeName);
}
for (String pvar : instance.getVariables().keySet()) {
if (names.contains(pvar)) {
names.remove(pvar);
}
}
if (!names.isEmpty()) {
String s = names.get(0);
for (int i = 1; i < names.size(); i++) {
s += ", " + names.get(i);
}
fail("Process Variable(s) do not exist: " + s);
}
}
Aggregations