
com.talanlabs.taskmanager.example.tap.MainTap Maven / Gradle / Ivy
The newest version!
package com.talanlabs.taskmanager.example.tap;
import com.talanlabs.taskmanager.engine.TaskManagerEngine;
import com.talanlabs.taskmanager.engine.configuration.ITaskManagerConfiguration;
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.manager.ITaskObjectManager;
import com.talanlabs.taskmanager.engine.manager.TaskObjectManagerBuilder;
import com.talanlabs.taskmanager.engine.taskdefinition.TaskDefinitionBuilder;
import com.talanlabs.taskmanager.engine.taskservice.ITaskService;
import com.talanlabs.taskmanager.example.tap.model.FicheContact;
import com.talanlabs.taskmanager.example.tap.model.FicheContactStatus;
import com.talanlabs.taskmanager.example.tap.model.Operation;
import com.talanlabs.taskmanager.example.tap.model.OperationStatus;
import com.talanlabs.taskmanager.example.tap.task.fiche.CommandeStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.fiche.CreateOperationTaskService;
import com.talanlabs.taskmanager.example.tap.task.fiche.EtudeStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.fiche.TermineStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.fiche.ValideStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.operation.CurrentStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.operation.DoneStatusTaskService;
import com.talanlabs.taskmanager.example.tap.task.operation.WaitItemTaskService;
import com.talanlabs.taskmanager.jpa.ICurrentStatusTransform;
import com.talanlabs.taskmanager.jpa.JPATaskFactory;
import com.talanlabs.taskmanager.jpa.JPATaskManagerReaderWriter;
import com.talanlabs.taskmanager.model.ITaskCluster;
import com.talanlabs.taskmanager.model.ITaskObject;
import org.apache.commons.beanutils.BeanUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Scanner;
public class MainTap {
public static void main(String[] args) {
TapHelper.getInstance().getJpaAccess().start();
List> ficheContactStatusGraphs = StatusGraphsBuilder.newBuilder().addNextStatusGraph(FicheContactStatus.ETUDE, "ETUDE_TASK",
StatusGraphsBuilder.newBuilder().addNextStatusGraph(FicheContactStatus.VALIDE, "VALIDE_TASK", StatusGraphsBuilder.newBuilder()
.addNextStatusGraph(FicheContactStatus.COMMANDE, "COMMANDE_TASK",
StatusGraphsBuilder.newBuilder().addNextStatusGraph(FicheContactStatus.TERMINE, "TERMINE_TASK")))).build();
ITaskObjectManager ficheContactTaskObjectManager = TaskObjectManagerBuilder.newBuilder(FicheContact.class)
.statusGraphs(ficheContactStatusGraphs).addTaskChainCriteria(null, FicheContactStatus.ETUDE, "CREATE_OP1_TASK,CREATE_OP2_TASK,CREATE_OP3_TASK").build();
List> operationStatusGraphs = StatusGraphsBuilder.newBuilder()
.addNextStatusGraph(OperationStatus.CURRENT, "CURRENT_TASK", StatusGraphsBuilder.newBuilder().addNextStatusGraph(OperationStatus.DONE, "DONE_TASK")).build();
ITaskObjectManager operationTaskObjectManager = TaskObjectManagerBuilder.newBuilder(Operation.class).statusGraphs(operationStatusGraphs)
.addTaskChainCriteria(OperationStatus.CURRENT, OperationStatus.DONE, "WAIT_ITEM_TASK").build();
ITaskObjectManagerRegistry taskObjectManagerRegistry = TaskObjectManagerRegistryBuilder.newBuilder().addTaskObjectManager(ficheContactTaskObjectManager)
.addTaskObjectManager(operationTaskObjectManager).build();
ITaskService createOperationTaskService = new CreateOperationTaskService();
ITaskDefinitionRegistry taskDefinitionRegistry = TaskDefinitionRegistryBuilder.newBuilder()
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("ETUDE_TASK", new EtudeStatusTaskService()).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("VALIDE_TASK", new ValideStatusTaskService()).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("COMMANDE_TASK", new CommandeStatusTaskService()).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("TERMINE_TASK", new TermineStatusTaskService()).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("CURRENT_TASK", new CurrentStatusTaskService()).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("DONE_TASK", new DoneStatusTaskService()).build())
.addTaskDefinition(TapTaskDefinitionBuilder.newBuilder("CREATE_OP1_TASK", createOperationTaskService).type("accompagnement").endFicheContactStatus(FicheContactStatus.VALIDE).build())
.addTaskDefinition(TapTaskDefinitionBuilder.newBuilder("CREATE_OP2_TASK", createOperationTaskService).type("reseau").endFicheContactStatus(FicheContactStatus.TERMINE).build())
.addTaskDefinition(TapTaskDefinitionBuilder.newBuilder("CREATE_OP3_TASK", createOperationTaskService).type("rus").endFicheContactStatus(FicheContactStatus.VALIDE).build())
.addTaskDefinition(TaskDefinitionBuilder.newBuilder("WAIT_ITEM_TASK", new WaitItemTaskService()).build()).build();
ICurrentStatusTransform currentStatusTransform = new ICurrentStatusTransform() {
@Override
public String toString(Class extends ITaskObject> taskObjectClass, Object currentStatus) {
if (currentStatus == null) {
return null;
}
if (FicheContact.class.equals(taskObjectClass)) {
return ((FicheContactStatus) currentStatus).name();
} else if (Operation.class.equals(taskObjectClass)) {
return ((OperationStatus) currentStatus).name();
}
throw new RuntimeException();
}
@Override
public Object toObject(Class extends ITaskObject> taskObjectClass, String currentStatusString) {
if (currentStatusString == null) {
return null;
}
if (FicheContact.class.equals(taskObjectClass)) {
return FicheContactStatus.valueOf(currentStatusString);
} else if (Operation.class.equals(taskObjectClass)) {
return OperationStatus.valueOf(currentStatusString);
}
throw new RuntimeException();
}
};
JPATaskManagerReaderWriter jpaTaskManagerReaderWriter = new JPATaskManagerReaderWriter(TapHelper.getInstance().getJpaAccess(), currentStatusTransform,
JPATaskManagerReaderWriter.RemoveMode.DELETE);
ITaskManagerConfiguration taskManagerConfiguration = TaskManagerConfigurationBuilder.newBuilder().taskObjectManagerRegistry(taskObjectManagerRegistry)
.taskDefinitionRegistry(taskDefinitionRegistry).taskFactory(new JPATaskFactory(currentStatusTransform)).taskManagerReader(jpaTaskManagerReaderWriter)
.taskManagerWriter(jpaTaskManagerReaderWriter).build();
TaskManagerEngine engine = new TaskManagerEngine(taskManagerConfiguration);
EntityManager em = TapHelper.getInstance().getJpaAccess().getEntityManager();
em.getTransaction().begin();
FicheContact ficheContact = new FicheContact();
em.persist(ficheContact);
em.getTransaction().commit();
ITaskCluster cluster = engine.startEngine(ficheContact);
System.out.println("Fiche contact " + ficheContact);
showOperations();
Scanner scanner = new Scanner(System.in);
while (!cluster.isCheckArchived()) {
System.out.println("Champs");
String field = scanner.nextLine();
System.out.println("Valeur");
String value = scanner.nextLine();
em.getTransaction().begin();
try {
BeanUtils.setProperty(ficheContact, field, value);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
em.persist(ficheContact);
em.getTransaction().commit();
engine.startEngine(ficheContact);
System.out.println("Fiche contact " + ficheContact);
showOperations();
}
TapHelper.getInstance().getJpaAccess().stop();
}
private static void showOperations() {
System.out.println("------ Operations ------");
Query q = TapHelper.getInstance().getJpaAccess().getEntityManager().createQuery("select t from Operation t");
List operations = q.getResultList();
operations.forEach(System.out::println);
System.out.println("Size: " + operations.size());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy