All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.talanlabs.taskmanager.example.component.MainComponent2 Maven / Gradle / Ivy

The newest version!
package com.talanlabs.taskmanager.example.component;

import com.talanlabs.taskmanager.component.ComponentInstanceToClass;
import com.talanlabs.taskmanager.engine.TaskManagerEngine;
import com.talanlabs.taskmanager.engine.configuration.TaskManagerConfigurationBuilder;
import com.talanlabs.taskmanager.engine.configuration.registry.ITaskDefinitionRegistry;
import com.talanlabs.taskmanager.engine.configuration.registry.ITaskObjectManagerRegistry;
import com.talanlabs.taskmanager.engine.configuration.registry.TaskDefinitionRegistryBuilder;
import com.talanlabs.taskmanager.engine.configuration.registry.TaskObjectManagerRegistryBuilder;
import com.talanlabs.taskmanager.engine.graph.IStatusGraph;
import com.talanlabs.taskmanager.engine.graph.StatusGraphsBuilder;
import com.talanlabs.taskmanager.engine.listener.LogTaskCycleListener;
import com.talanlabs.taskmanager.engine.manager.ITaskObjectManager;
import com.talanlabs.taskmanager.engine.manager.TaskObjectManagerBuilder;
import com.talanlabs.taskmanager.engine.taskdefinition.TaskDefinitionBuilder;
import com.talanlabs.taskmanager.example.component.business.CustomerOrderBuilder;
import com.talanlabs.taskmanager.example.component.business.CustomerOrderStatus;
import com.talanlabs.taskmanager.example.component.business.ICustomerOrder;
import com.talanlabs.taskmanager.example.component.task.enrichment.DateClosedTaskService;
import com.talanlabs.taskmanager.example.component.task.enrichment.NotConfirmedTaskService;
import com.talanlabs.taskmanager.example.component.task.enrichment.ReferenceTaskService;
import com.talanlabs.taskmanager.example.component.task.updatestatus.CANTaskService;
import com.talanlabs.taskmanager.example.component.task.updatestatus.CLOTaskService;
import com.talanlabs.taskmanager.example.component.task.updatestatus.TCOTaskService;
import com.talanlabs.taskmanager.example.component.task.updatestatus.VALTaskService;

import java.util.List;
import java.util.UUID;

public class MainComponent2 {

    public static void main(String[] args) {
        List> statusGraphs = StatusGraphsBuilder.newBuilder().addNextStatusGraph(CustomerOrderStatus.TCO, "TCO",
                StatusGraphsBuilder.newBuilder().addNextStatusGraph(CustomerOrderStatus.VAL, "VAL",
                        StatusGraphsBuilder.newBuilder().addNextStatusGraph(CustomerOrderStatus.TCO, "TCO").addNextStatusGraph(CustomerOrderStatus.CLO, "CLO"))
                        .addNextStatusGraph(CustomerOrderStatus.CAN, "CAN")).addNextStatusGraph(CustomerOrderStatus.CAN, "CAN").build();

        ITaskObjectManager customerOrderTaskObjectManager = TaskObjectManagerBuilder.newBuilder(ICustomerOrder.class)
                .statusGraphs(statusGraphs).addTaskChainCriteria(null, CustomerOrderStatus.TCO, "REF").addTaskChainCriteria(CustomerOrderStatus.VAL, CustomerOrderStatus.CLO, "REF2=>DATE")
                .addTaskChainCriteria(CustomerOrderStatus.VAL, CustomerOrderStatus.TCO, "NOT-VAL").build();

        ITaskObjectManagerRegistry taskObjectManagerRegistry = TaskObjectManagerRegistryBuilder.newBuilder().instanceToClass(ComponentInstanceToClass.INSTANCE)
                .addTaskObjectManager(customerOrderTaskObjectManager).build();

        ITaskDefinitionRegistry taskDefinitionRegistry = TaskDefinitionRegistryBuilder.newBuilder().addTaskDefinition(TaskDefinitionBuilder.newBuilder("TCO", new TCOTaskService()).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("VAL", new VALTaskService()).build()).addTaskDefinition(TaskDefinitionBuilder.newBuilder("CLO", new CLOTaskService()).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("CAN", new CANTaskService()).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("DATE", new DateClosedTaskService()).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("REF", new ReferenceTaskService("Ma ref 1")).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("REF2", new ReferenceTaskService("Ma ref 2")).build())
                .addTaskDefinition(TaskDefinitionBuilder.newBuilder("NOT-VAL", new NotConfirmedTaskService()).build()).build();

        TaskManagerEngine engine = new TaskManagerEngine(
                TaskManagerConfigurationBuilder.newBuilder().taskObjectManagerRegistry(taskObjectManagerRegistry).taskDefinitionRegistry(taskDefinitionRegistry).build());

        engine.addTaskManagerListener(new LogTaskCycleListener());

        ICustomerOrder customerOrder = CustomerOrderBuilder.newBuilder().id(UUID.randomUUID().toString()).version(0).customerOrderNo("123456").confirmed(false).build();
        engine.startEngine(customerOrder);

        System.out.println(customerOrder);
        customerOrder.setConfirmed(true);

        engine.startEngine(customerOrder);

        System.out.println(customerOrder);

        try {
            Thread.sleep(2 * 1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        engine.startEngine(customerOrder);

        System.out.println(customerOrder);

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy