@Test
@Ignore
public void testCancelNonRegisteredWorkItemHandler() {
String processId = "org.drools.actions";
String workName = "Unnexistent Task";
RuleFlowProcess process = getWorkItemProcess( processId, workName );
KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
((KnowledgeBaseImpl) kbase).addProcess( process );
KieSession ksession = createSession(kbase);
ksession.getWorkItemManager().registerWorkItemHandler( workName, new DoNothingWorkItemHandler() );
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put( "UserName", "John Doe" );
parameters.put( "Person",
new Person( "John Doe" ) );
ProcessInstance processInstance = ksession.startProcess( "org.drools.actions",
parameters );
long processInstanceId = processInstance.getId();
Assert.assertEquals( ProcessInstance.STATE_ACTIVE,
processInstance.getState() );
ksession.getWorkItemManager().registerWorkItemHandler( workName,
null );
try {
ksession.abortProcessInstance( processInstanceId );
Assert.fail( "should fail if WorkItemHandler for" + workName + "is not registered" );
} catch ( WorkItemHandlerNotFoundException wihnfe ) {
}
Assert.assertEquals( ProcessInstance.STATE_ABORTED, processInstance.getState() );
}