kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/UserTasksContainerQuarkusTemplate.java [52:102]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Application application;

    private Map<String, UserTask> mappedUserTask = new HashMap<>();

    @jakarta.annotation.PostConstruct
    public void setup() {
        UserTaskInstances userTaskInstances = application.config().get(UserTaskConfig.class).userTaskInstances();
        userTaskInstances.setDisconnectUserTaskInstance(this::disconnect);
        userTaskInstances.setReconnectUserTaskInstance(this::connect);
        for (UserTask userTask : userTasks) {
            mappedUserTask.put(userTask.id(), userTask);
            LOG.info("Registering user task {} with task name {}", userTask.id(), userTask.getTaskName());
        }
        JobsService jobsService = application.config().get(UserTaskConfig.class).jobsService();
        UnitOfWorkManager unitOfWorkManager = application.config().get(UserTaskConfig.class).unitOfWorkManager();
        if (jobsService instanceof InMemoryJobService) {
            InMemoryJobService inMemoryJobService = (InMemoryJobService) jobsService;
            InMemoryJobContext context = new InMemoryJobContext(null, unitOfWorkManager, null, this);
            inMemoryJobService.registerJobExecutorFactory(new InMemoryUserTaskJobExecutorFactory(context));
        }
    }

    public UserTask userTaskById(String userTaskId) {
        return mappedUserTask.get(userTaskId);
    }

    public Collection<String> userTaskIds() {
        return mappedUserTask.keySet();
    }

    @Override
    public UserTaskInstances instances() {
        return application.config().get(UserTaskConfig.class).userTaskInstances();
    }

    private UserTaskInstance disconnect(UserTaskInstance userTaskInstance) {
        DefaultUserTaskInstance instance = (DefaultUserTaskInstance) userTaskInstance;
        instance.setUserTask(null);
        instance.setUserTaskEventSupport(null);
        instance.setUserTaskLifeCycle(null);
        instance.setInstances(null);
        instance.setJobsService(null);
        return instance;
    }

    public UserTaskInstance connect(UserTaskInstance userTaskInstance) {
        DefaultUserTaskInstance instance = (DefaultUserTaskInstance) userTaskInstance;
        UserTaskConfig userTaskConfig = application.config().get(UserTaskConfig.class);
        KogitoUserTaskEventSupportImpl impl = new KogitoUserTaskEventSupportImpl(userTaskConfig.identityProvider());
        userTaskConfig.userTaskEventListeners().listeners().forEach(impl::addEventListener);
        impl.addEventListener(new UnitOfWorkUserTaskEventListener(application.unitOfWorkManager()));
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/UserTasksContainerSpringTemplate.java [52:103]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Application application;

    private Map<String, UserTask> mappedUserTask = new HashMap<>();

    @jakarta.annotation.PostConstruct
    public void setup() {
        UserTaskInstances userTaskInstances = application.config().get(UserTaskConfig.class).userTaskInstances();
        userTaskInstances.setDisconnectUserTaskInstance(this::disconnect);
        userTaskInstances.setReconnectUserTaskInstance(this::connect);

        for (UserTask userTask : userTasks) {
            mappedUserTask.put(userTask.id(), userTask);
            LOG.info("Registering user task {} with task name {}", userTask.id(), userTask.getTaskName());
        }
        JobsService jobsService = application.config().get(UserTaskConfig.class).jobsService();
        UnitOfWorkManager unitOfWorkManager = application.config().get(UserTaskConfig.class).unitOfWorkManager();
        if (jobsService instanceof InMemoryJobService) {
            InMemoryJobService inMemoryJobService = (InMemoryJobService) jobsService;
            InMemoryJobContext context = new InMemoryJobContext(null, unitOfWorkManager, null, this);
            inMemoryJobService.registerJobExecutorFactory(new InMemoryUserTaskJobExecutorFactory(context));
        }
    }

    public UserTask userTaskById(String userTaskId) {
        return mappedUserTask.get(userTaskId);
    }

    public Collection<String> userTaskIds() {
        return mappedUserTask.keySet();
    }

    @Override
    public UserTaskInstances instances() {
        return application.config().get(UserTaskConfig.class).userTaskInstances();
    }

    private UserTaskInstance disconnect(UserTaskInstance userTaskInstance) {
        DefaultUserTaskInstance instance = (DefaultUserTaskInstance) userTaskInstance;
        instance.setUserTask(null);
        instance.setUserTaskEventSupport(null);
        instance.setUserTaskLifeCycle(null);
        instance.setInstances(null);
        instance.setJobsService(null);
        return instance;
    }

    public UserTaskInstance connect(UserTaskInstance userTaskInstance) {
        DefaultUserTaskInstance instance = (DefaultUserTaskInstance) userTaskInstance;
        UserTaskConfig userTaskConfig = application.config().get(UserTaskConfig.class);
        KogitoUserTaskEventSupportImpl impl = new KogitoUserTaskEventSupportImpl(userTaskConfig.identityProvider());
        userTaskConfig.userTaskEventListeners().listeners().forEach(impl::addEventListener);
        impl.addEventListener(new UnitOfWorkUserTaskEventListener(application.unitOfWorkManager()));
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



