@Override public void writeWorkItem(MarshallerWriteContext context, org.drools.core.process.instance.WorkItem workItem) { try { JBPMMessages.WorkItem _workItem = writeWorkItem(context, workItem, persistWorkItemVars); PersisterHelper.writeToStreamWithHeader( context, _workItem ); } catch (IOException e) { throw new IllegalArgumentException( "IOException while storing work item instance " + workItem.getId() + ": " + e.getMessage(), e ); } }
protected WorkItemNodeInstance findNodeInstance(long workItemId, NodeInstanceContainer container) { for (NodeInstance nodeInstance : container.getNodeInstances()) { if (nodeInstance instanceof WorkItemNodeInstance) { WorkItemNodeInstance workItemNodeInstance = (WorkItemNodeInstance) nodeInstance; if (workItemNodeInstance.getWorkItem().getId() == workItemId) { return workItemNodeInstance; } } if (nodeInstance instanceof NodeInstanceContainer) { WorkItemNodeInstance result = findNodeInstance(workItemId, ((NodeInstanceContainer) nodeInstance)); if (result != null) { return result; } } } return null; } }
@Override public AuditEvent buildEvent(ProcessNodeTriggeredEvent pnte, Object log) { NodeInstanceImpl nodeInstance = (NodeInstanceImpl) pnte.getNodeInstance(); NodeInstanceLog logEvent =null; if (log != null) { logEvent = (NodeInstanceLog) log; if (nodeInstance instanceof WorkItemNodeInstance && ((WorkItemNodeInstance) nodeInstance).getWorkItem() != null) { logEvent.setWorkItemId(((WorkItemNodeInstance) nodeInstance).getWorkItem().getId()); } if (nodeInstance instanceof SubProcessNodeInstance) { logEvent.setReferenceId(((SubProcessNodeInstance) nodeInstance).getProcessInstanceId()); } return logEvent; } return null; }
parameters.put("WorkItemId", workItem.getId()); parameters.put("NodeInstanceId", this.getId()); parameters.put("ErrorMessage", handlerException.getMessage());
case ABORT: ((WorkItemManager) ((ProcessInstance) getProcessInstance()) .getKnowledgeRuntime().getWorkItemManager()).abortWorkItem(getWorkItem().getId()); break; case RETHROW: .getKnowledgeRuntime().getWorkItemManager()).retryWorkItem(getWorkItem().getId(), parameters); break; case COMPLETE: .getKnowledgeRuntime().getWorkItemManager()).completeWorkItem(getWorkItem().getId(), ((WorkflowProcessInstanceImpl)processInstance).getVariables()); break;
nodeId, nodeInstance.getNodeName()); if (nodeInstance instanceof WorkItemNodeInstance && ((WorkItemNodeInstance) nodeInstance).getWorkItem() != null) { log.setWorkItemId(((WorkItemNodeInstance) nodeInstance).getWorkItem().getId());
logEvent.setWorkItemId(((WorkItemNodeInstance) nodeInstance).getWorkItem().getId());
throw wihnfe; } catch (ProcessWorkItemHandlerException handlerException) { this.workItemId = workItem.getId(); handleWorkItemHandlerException(handlerException, workItem); } catch (Exception e) { this.workItemId = workItem.getId(); exceptionScopeInstance.handleException(exceptionName, e); triggerCompleted(); this.workItemId = workItem.getId();
public static void writeWorkItem_v1(MarshallerWriteContext context, WorkItem workItem) throws IOException { ObjectOutputStream stream = context.stream; stream.writeLong( workItem.getId() ); stream.writeLong( workItem.getProcessInstanceId() ); stream.writeUTF( workItem.getName() ); stream.writeInt( workItem.getState() ); //Work Item Parameters Map<String, Object> parameters = workItem.getParameters(); Collection<Object> notNullValues = new ArrayList<Object>(); for ( Object value : parameters.values() ) { if ( value != null ) { notNullValues.add( value ); } } stream.writeInt( notNullValues.size() ); for ( String key : parameters.keySet() ) { Object object = parameters.get( key ); if ( object != null ) { stream.writeUTF( key ); int index = context.objectMarshallingStrategyStore.getStrategy( object ); stream.writeInt( index ); ObjectMarshallingStrategy strategy = context.objectMarshallingStrategyStore.getStrategy( index ); if ( strategy.accept( object ) ) { strategy.write( stream, object ); } } } }
@Override public void writeWorkItem(MarshallerWriteContext context, org.drools.core.process.instance.WorkItem workItem) { try { JBPMMessages.WorkItem _workItem = writeWorkItem(context, workItem, persistWorkItemVars); PersisterHelper.writeToStreamWithHeader( context, _workItem ); } catch (IOException e) { throw new IllegalArgumentException( "IOException while storing work item instance " + workItem.getId() + ": " + e.getMessage(), e ); } }
@Override public void transform() { this.state = workItem.getState(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { MarshallerWriteContext context = new MarshallerWriteContext( baos, null, null, null, null, this.env); ProtobufOutputMarshaller.writeWorkItem(context, workItem); context.close(); this.workItemByteArray = baos.toByteArray(); } catch ( IOException e ) { throw new IllegalArgumentException( "IOException while storing workItem " + workItem.getId() + ": " + e.getMessage() ); } }
protected WorkItemNodeInstance findNodeInstance(long workItemId, NodeInstanceContainer container) { for (NodeInstance nodeInstance : container.getNodeInstances()) { if (nodeInstance instanceof WorkItemNodeInstance) { WorkItemNodeInstance workItemNodeInstance = (WorkItemNodeInstance) nodeInstance; if (workItemNodeInstance.getWorkItem().getId() == workItemId) { return workItemNodeInstance; } } if (nodeInstance instanceof NodeInstanceContainer) { WorkItemNodeInstance result = findNodeInstance(workItemId, ((NodeInstanceContainer) nodeInstance)); if (result != null) { return result; } } } return null; } }
public void internalExecuteWorkItem( WorkItem workItem ) { Environment env = this.kruntime.getEnvironment(); WorkItemInfo workItemInfo = new WorkItemInfo( workItem, env ); PersistenceContext context = getPersistenceContext(); workItemInfo = (WorkItemInfo) context.persist( workItemInfo ); ((WorkItemImpl) workItem).setId( workItemInfo.getId() ); if ( this.workItems == null ) { this.workItems = new HashMap<Long, WorkItemInfo>(); } workItems.put( workItem.getId(), workItemInfo ); WorkItemHandler handler = (WorkItemHandler) this.workItemHandlers.get( workItem.getName() ); if ( handler != null ) { handler.executeWorkItem( workItem, this ); } else { throwWorkItemNotFoundException( workItem ); } }
public void abortWorkItem( long id ) { PersistenceContext context = getPersistenceContext(); WorkItemInfo workItemInfo = null; if ( this.workItems != null ) { workItemInfo = this.workItems.get( id ); if ( workItemInfo != null ) { workItemInfo = (WorkItemInfo) context.merge( workItemInfo ); } } if ( workItemInfo == null ) { workItemInfo = (WorkItemInfo) context.findWorkItem( id ); } // work item may have been aborted if ( workItemInfo != null ) { WorkItem workItem = (WorkItemImpl) internalGetWorkItem( workItemInfo ); ProcessInstance processInstance = kruntime.getProcessInstance( workItem.getProcessInstanceId() ); workItem.setState( WorkItem.ABORTED ); // process instance may have finished already if ( processInstance != null ) { processInstance.signalEvent( "workItemAborted", workItem ); } context.remove( workItemInfo ); if ( workItems != null ) { workItems.remove( workItem.getId() ); } } }
public static void writeWorkItem_v1(MarshallerWriteContext context, WorkItem workItem) throws IOException { ObjectOutputStream stream = context.stream; stream.writeLong( workItem.getId() ); stream.writeLong( workItem.getProcessInstanceId() ); stream.writeUTF( workItem.getName() ); stream.writeInt( workItem.getState() ); //Work Item Parameters Map<String, Object> parameters = workItem.getParameters(); Collection<Object> notNullValues = new ArrayList<Object>(); for ( Object value : parameters.values() ) { if ( value != null ) { notNullValues.add( value ); } } stream.writeInt( notNullValues.size() ); for ( String key : parameters.keySet() ) { Object object = parameters.get( key ); if ( object != null ) { stream.writeUTF( key ); int index = context.objectMarshallingStrategyStore.getStrategy( object ); stream.writeInt( index ); ObjectMarshallingStrategy strategy = context.objectMarshallingStrategyStore.getStrategy( index ); if ( strategy.accept( object ) ) { strategy.write( stream, object ); } } } }
parameters.put("WorkItemId", workItem.getId()); parameters.put("NodeInstanceId", this.getId()); parameters.put("ErrorMessage", handlerException.getMessage());