Search in sources :

Example 6 with EndEvent

use of org.apache.inlong.manager.workflow.definition.EndEvent in project incubator-inlong by apache.

the class AbstractNextableElementProcessor method next.

@Override
public List<Element> next(T element, WorkflowContext context) {
    WorkflowContext.ActionContext actionContext = context.getActionContext();
    List<Element> nextElements = element.getNextList(actionContext.getAction(), context);
    Preconditions.checkNotEmpty(nextElements, "not found next element ");
    Element endEvent = nextElements.stream().filter(EndEvent.class::isInstance).findFirst().orElse(null);
    if (endEvent == null) {
        return nextElements;
    }
    List<Element> notEndEventElements = nextElements.stream().filter(ele -> !(ele instanceof EndEvent)).collect(Collectors.toList());
    if (CollectionUtils.isEmpty(notEndEventElements)) {
        return Collections.singletonList(endEvent);
    }
    throw new WorkflowException("process definition error, find endEvent and not endEvent at the same time");
}
Also used : List(java.util.List) EndEvent(org.apache.inlong.manager.workflow.definition.EndEvent) Preconditions(org.apache.inlong.manager.common.util.Preconditions) WorkflowException(org.apache.inlong.manager.common.exceptions.WorkflowException) CollectionUtils(org.springframework.util.CollectionUtils) Element(org.apache.inlong.manager.workflow.definition.Element) NextableElement(org.apache.inlong.manager.workflow.definition.NextableElement) WorkflowContext(org.apache.inlong.manager.workflow.WorkflowContext) Collections(java.util.Collections) Collectors(java.util.stream.Collectors) WorkflowContext(org.apache.inlong.manager.workflow.WorkflowContext) Element(org.apache.inlong.manager.workflow.definition.Element) NextableElement(org.apache.inlong.manager.workflow.definition.NextableElement) WorkflowException(org.apache.inlong.manager.common.exceptions.WorkflowException) EndEvent(org.apache.inlong.manager.workflow.definition.EndEvent)

Example 7 with EndEvent

use of org.apache.inlong.manager.workflow.definition.EndEvent in project incubator-inlong by apache.

the class CreateStreamWorkflowDefinition method defineProcess.

@Override
public WorkflowProcess defineProcess() {
    // Configuration process
    WorkflowProcess process = new WorkflowProcess();
    process.addListener(initGroupListener);
    process.addListener(streamFailedProcessListener);
    process.addListener(streamCompleteProcessListener);
    process.setType("Inlong stream access resource creation");
    process.setName(getProcessName().name());
    process.setDisplayName(getProcessName().getDisplayName());
    process.setFormClass(GroupResourceProcessForm.class);
    process.setVersion(1);
    process.setHidden(1);
    // Start node
    StartEvent startEvent = new StartEvent();
    process.setStartEvent(startEvent);
    // End node
    EndEvent endEvent = new EndEvent();
    process.setEndEvent(endEvent);
    ServiceTask createPulsarTopicTask = new ServiceTask();
    createPulsarTopicTask.setSkipResolver(c -> {
        GroupResourceProcessForm form = (GroupResourceProcessForm) c.getProcessForm();
        String mqType = form.getGroupInfo().getMiddlewareType();
        if (Constant.MIDDLEWARE_PULSAR.equals(mqType) || Constant.MIDDLEWARE_TDMQ_PULSAR.equals(mqType)) {
            return false;
        }
        log.warn("no need to create pulsar topic for groupId={}, streamId={}, as the middlewareType={}", form.getInlongGroupId(), form.getInlongStreamId(), mqType);
        return true;
    });
    createPulsarTopicTask.setName("createPulsarTopic");
    createPulsarTopicTask.setDisplayName("Stream-CreatePulsarTopic");
    createPulsarTopicTask.addListener(createPulsarTopicTaskListener);
    process.addTask(createPulsarTopicTask);
    ServiceTask createPulsarSubscriptionGroupTask = new ServiceTask();
    createPulsarSubscriptionGroupTask.setSkipResolver(c -> {
        GroupResourceProcessForm form = (GroupResourceProcessForm) c.getProcessForm();
        String mqType = form.getGroupInfo().getMiddlewareType();
        if (Constant.MIDDLEWARE_PULSAR.equals(mqType) || Constant.MIDDLEWARE_TDMQ_PULSAR.equals(mqType)) {
            return false;
        }
        log.warn("no need to create pulsar subscription for groupId={}, streamId={}, as the middlewareType={}", form.getInlongGroupId(), form.getInlongStreamId(), mqType);
        return true;
    });
    createPulsarSubscriptionGroupTask.setName("createPulsarSubscription");
    createPulsarSubscriptionGroupTask.setDisplayName("Stream-CreatePulsarSubscription");
    createPulsarSubscriptionGroupTask.addListener(createPulsarGroupTaskListener);
    process.addTask(createPulsarSubscriptionGroupTask);
    ServiceTask createHiveTableTask = new ServiceTask();
    createHiveTableTask.setSkipResolver(c -> {
        GroupResourceProcessForm form = (GroupResourceProcessForm) c.getProcessForm();
        String groupId = form.getInlongGroupId();
        String streamId = form.getInlongStreamId();
        List<String> dsForHive = sinkService.getExistsStreamIdList(groupId, Constant.SINK_HIVE, Collections.singletonList(streamId));
        if (CollectionUtils.isEmpty(dsForHive)) {
            log.warn("inlong group [{}] adn inlong stream [{}] does not have sink, skip create hive table", groupId, streamId);
            return true;
        }
        return false;
    });
    createHiveTableTask.setName("createHiveTable");
    createHiveTableTask.setDisplayName("Stream-CreateHiveTable");
    createHiveTableTask.addListener(createHiveTableListener);
    process.addTask(createHiveTableTask);
    ServiceTask pushSortConfig = new ServiceTask();
    pushSortConfig.setName("pushSortConfig");
    pushSortConfig.setDisplayName("Stream-PushSortConfig");
    pushSortConfig.addListener(pushSortConfigListener);
    process.addTask(pushSortConfig);
    startEvent.addNext(createPulsarTopicTask);
    createPulsarTopicTask.addNext(createPulsarSubscriptionGroupTask);
    createPulsarSubscriptionGroupTask.addNext(createHiveTableTask);
    createHiveTableTask.addNext(pushSortConfig);
    pushSortConfig.addNext(endEvent);
    return process;
}
Also used : ServiceTask(org.apache.inlong.manager.workflow.definition.ServiceTask) StartEvent(org.apache.inlong.manager.workflow.definition.StartEvent) EndEvent(org.apache.inlong.manager.workflow.definition.EndEvent) WorkflowProcess(org.apache.inlong.manager.workflow.definition.WorkflowProcess) GroupResourceProcessForm(org.apache.inlong.manager.common.pojo.workflow.form.GroupResourceProcessForm)

Example 8 with EndEvent

use of org.apache.inlong.manager.workflow.definition.EndEvent in project incubator-inlong by apache.

the class RestartGroupWorkflowDefinition method defineProcess.

@Override
public WorkflowProcess defineProcess() {
    // Configuration process
    WorkflowProcess process = new WorkflowProcess();
    process.addListener(updateGroupListener);
    process.addListener(updateGroupCompleteListener);
    process.setType("Group Resource Restart");
    process.setName(getProcessName().name());
    process.setDisplayName(getProcessName().getDisplayName());
    process.setFormClass(UpdateGroupProcessForm.class);
    process.setVersion(1);
    process.setHidden(1);
    // Start node
    StartEvent startEvent = new StartEvent();
    process.setStartEvent(startEvent);
    // restart sort
    ServiceTask restartSortTask = new ServiceTask();
    restartSortTask.setName("restartSort");
    restartSortTask.setDisplayName("Group-RestartSort");
    restartSortTask.addServiceTaskType(ServiceTaskType.RESTART_SORT);
    restartSortTask.addListenerProvider(serviceTaskListenerFactory);
    process.addTask(restartSortTask);
    // restart datasource
    ServiceTask restartDataSourceTask = new ServiceTask();
    restartDataSourceTask.setName("restartSource");
    restartDataSourceTask.setDisplayName("Group-RestartSource");
    restartDataSourceTask.addServiceTaskType(ServiceTaskType.RESTART_SOURCE);
    restartDataSourceTask.addListenerProvider(serviceTaskListenerFactory);
    process.addTask(restartDataSourceTask);
    // End node
    EndEvent endEvent = new EndEvent();
    process.setEndEvent(endEvent);
    startEvent.addNext(restartSortTask);
    restartSortTask.addNext(restartDataSourceTask);
    restartDataSourceTask.addNext(endEvent);
    return process;
}
Also used : ServiceTask(org.apache.inlong.manager.workflow.definition.ServiceTask) StartEvent(org.apache.inlong.manager.workflow.definition.StartEvent) EndEvent(org.apache.inlong.manager.workflow.definition.EndEvent) WorkflowProcess(org.apache.inlong.manager.workflow.definition.WorkflowProcess)

Aggregations

EndEvent (org.apache.inlong.manager.workflow.definition.EndEvent)8 StartEvent (org.apache.inlong.manager.workflow.definition.StartEvent)7 WorkflowProcess (org.apache.inlong.manager.workflow.definition.WorkflowProcess)7 ServiceTask (org.apache.inlong.manager.workflow.definition.ServiceTask)5 UserTask (org.apache.inlong.manager.workflow.definition.UserTask)2 Collections (java.util.Collections)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 WorkflowException (org.apache.inlong.manager.common.exceptions.WorkflowException)1 GroupResourceProcessForm (org.apache.inlong.manager.common.pojo.workflow.form.GroupResourceProcessForm)1 Preconditions (org.apache.inlong.manager.common.util.Preconditions)1 WorkflowContext (org.apache.inlong.manager.workflow.WorkflowContext)1 Element (org.apache.inlong.manager.workflow.definition.Element)1 NextableElement (org.apache.inlong.manager.workflow.definition.NextableElement)1 CollectionUtils (org.springframework.util.CollectionUtils)1