package ee.telekom.workflow.graph.node.activity; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; import ee.telekom.workflow.graph.AbstractGraphTest; import ee.telekom.workflow.graph.Environment; import ee.telekom.workflow.graph.Graph; import ee.telekom.workflow.graph.GraphEngine; import ee.telekom.workflow.graph.GraphFactory; import ee.telekom.workflow.graph.GraphInstance; import ee.telekom.workflow.graph.GraphWorkItem; import ee.telekom.workflow.graph.RecordEventsListener; import ee.telekom.workflow.graph.RecordPathScript; import ee.telekom.workflow.graph.Token; import ee.telekom.workflow.graph.WorkItemStatus; import ee.telekom.workflow.graph.core.EnvironmentImpl; import ee.telekom.workflow.graph.node.input.AttributeMapping; import ee.telekom.workflow.graph.node.input.ConstantMapping; import ee.telekom.workflow.graph.node.input.InputMapping; import ee.telekom.workflow.graph.node.input.MapMapping; public class HumanTaskActivityTest extends AbstractGraphTest{ @Test public void test_simple(){ InputMapping<String> roleMapping = ConstantMapping.of( "role-id" ); InputMapping<String> userMapping = ConstantMapping.of( "user-id" ); MapMapping argumentsMapping = new MapMapping(); argumentsMapping.addEntryMapping( "clientId", new AttributeMapping<Object>( "clientId" ) ); argumentsMapping.addEntryMapping( "taskId", new ConstantMapping<Object>( "job" ) ); Graph graph = GraphFactory.INSTANCE.human_task_one_pre_post_special( roleMapping, userMapping, argumentsMapping, null ); EnvironmentImpl initialEnv = createSingletonEnvironment( "clientId", 10 ); EnvironmentImpl expectedEnv = createSingletonEnvironment( RecordPathScript.ATTRIBUTE, "1,3" ); expectedEnv.setAttribute( "clientId", 10 ); Map<String, Object> arguments = new HashMap<String, Object>(); arguments.put( "clientId", 10 ); arguments.put( "taskId", "job" ); assertHumanTaskExecution( graph, initialEnv, expectedEnv, "role-id", "user-id", arguments ); } private void assertHumanTaskExecution( Graph graph, Environment initialEnv, Environment expectedEnv, String role, String user, Map<String, Object> arguments ){ RecordEventsListener listener = new RecordEventsListener(); GraphEngine engine = createEngine( listener ); GraphInstance instance = engine.start( graph, initialEnv ); assertActiveTokens( instance, 1 ); assertActiveWorkItems( instance, 1 ); Token token = getTokenById( instance.getTokens(), 1 ); assertAwaitingHumanTask( token, role, user, arguments ); GraphWorkItem wi = token.getInstance().getActiveWorkItem( token ); engine.complete( wi ); assertActiveTokens( instance, 0 ); assertActiveWorkItems( instance, 0 ); assertEnvironmnent( instance, expectedEnv ); Assert.assertEquals( EVENTS_1WI, listener.getEvents() ); } private void assertAwaitingHumanTask( Token token, String role, String user, Map<String, Object> arguments ){ Assert.assertTrue( token.isActive() ); Assert.assertTrue( token.getNode() instanceof HumanTaskActivity ); GraphWorkItem wi = token.getInstance().getActiveWorkItem( token ); Assert.assertEquals( role, wi.getRole() ); Assert.assertEquals( user, wi.getUser() ); Assert.assertEquals( arguments, wi.getHumanTaskArguments() ); Assert.assertEquals( WorkItemStatus.NEW, wi.getStatus() ); } }