Package org.apache.agila.services

Source Code of org.apache.agila.services.TaskServiceTestCase

/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.agila.services;

import java.io.InputStreamReader;
import java.io.Reader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.apache.agila.engine.Engine;
import org.apache.agila.engine.InstanceID;
import org.apache.agila.engine.MessageProcessor;
import org.apache.agila.impl.QueueServiceImpl;
import org.apache.agila.impl.memory.InstanceServiceImpl;
import org.apache.agila.impl.memory.BusinessProcessServiceImpl;
import org.apache.agila.impl.memory.TaskServiceImpl;
import org.apache.agila.impl.memory.TimerServiceImpl;
import org.apache.agila.impl.memory.TokenServiceImpl;
import org.apache.agila.impl.memory.NotificationServiceImpl;
import org.apache.agila.services.notification.NotificationService;
import org.apache.agila.services.task.Task;
import org.apache.agila.services.task.TaskID;
import org.apache.agila.services.user.UserID;

import junit.framework.TestCase;

public class TaskServiceTestCase extends TestCase {

    private TokenService tokenService;
    private InstanceServiceImpl eiSvc;
    private BusinessProcessServiceImpl graphManager;
    private TaskServiceImpl taskService;
    private TimerServiceImpl timerService;
    private MessageProcessor impl;
    private QueueServiceImpl qs;
    private Engine engine;
    private NotificationService notificationService;

    public void testSetTaskStatus() {
        InstanceID id = engine.startNewInstance( 1, new HashMap() );
       
        try {
            Thread.sleep( 1000 );
        } catch (InterruptedException e) {
            e.printStackTrace();
            fail( e.getMessage() );
        }

        List taskList = taskService.getTasksForUser( new UserID( 1 ), Task.TASK_ALL );

        assertNotNull( "There are no tasks to process", taskList );

        for( Iterator iterator = taskList.iterator(); iterator.hasNext(); ) {
            Task task = (Task)iterator.next();
            taskService.setTaskStatus( task.getTaskID(), Task.TASK_COMPLETE );
        }
       
        List taskListAfterUpdate = taskService.getTasksForUser( new UserID( 1 ), Task.TASK_COMPLETE );

        assertEquals( "Updating of task status should not create another task", taskList.size(), taskListAfterUpdate.size() );
       
        for( int i = 0; i < taskList.size(); i++ ) {
            TaskID taskID1 = ((Task)taskList.get( i )).getTaskID();
            TaskID taskID2 = ((Task)taskListAfterUpdate.get( i )).getTaskID();
           
            assertEquals( "Task ID should not change after update.", taskID1, taskID2 );
        }

        // lets find the tasks for a workflow instance
        InstanceID instanceID = new InstanceID(1);
        taskList = taskService.getTasksForInstance(instanceID, Task.TASK_ALL);
        assertNotNull("Should have found a list");

        taskList = taskService.getTasksForInstance(instanceID, Task.TASK_COMPLETE);
        assertNotNull("Should have found a list");

        // lets cancel all oustanding tasks
        taskService.setTaskStatusForInstance(instanceID, Task.TASK_ALL, Task.TASK_INCOMPLETE);
        taskService.setTaskStatusForInstance(instanceID, Task.TASK_INCOMPLETE, Task.TASK_COMPLETE);
    }

    public void setUp() throws Exception {
        tokenService = new TokenServiceImpl();
        eiSvc = new InstanceServiceImpl();
        graphManager = new BusinessProcessServiceImpl();
        taskService = new TaskServiceImpl();
        timerService = new TimerServiceImpl();
        notificationService = new NotificationServiceImpl();

        taskService.setTokenService(tokenService);

        impl = new MessageProcessor();

        impl.setTaskService(taskService);
        impl.setTimerService(timerService);
        impl.setExecutionInstanceService(eiSvc);
        impl.setTokenService(tokenService);
        impl.setBusinessProcessService(graphManager);
        impl.setNotificationService( notificationService );

        qs = new QueueServiceImpl(impl);

        timerService.setQueueService(qs);

        impl.setQueueService(qs);

        eiSvc.setBusinessProcessService(graphManager);
        eiSvc.setQueueService(qs);
        eiSvc.setTokenService(tokenService);

        qs.start();

        engine = new Engine(tokenService, eiSvc, graphManager, qs);

        Reader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream(
                "org/apache/agila/workflow_simple.xml"));

        engine.addBusinessProcess(reader);
    }

    public void tearDown() throws Exception {
        tokenService = null;
        eiSvc = null;
        graphManager = null;
        taskService = null;
        timerService = null;
        impl = null;
        qs = null;
        engine = null;
    }
}
TOP

Related Classes of org.apache.agila.services.TaskServiceTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.