Search in sources :

Example 1 with MappableToModel

use of org.kie.kogito.MappableToModel in project kogito-runtimes by kiegroup.

the class HumanTaskServiceImpl method get.

@Override
public ExtendedDataContext get(LocalId id, MetaDataContext meta) {
    TaskMetaDataContext metaCtx = meta.as(TaskMetaDataContext.class);
    SecurityPolicy securityPolicy = convertPolicyObject(metaCtx.policy());
    try {
        // /tasks
        TaskIds taskIds = ProcessIdParser.select(id, TaskIds.class);
        ProcessInstanceId instanceId = taskIds.processInstanceId();
        Process<MappableToModel<Model>> process = parseProcess(instanceId.processId());
        String processInstanceIdString = instanceId.processInstanceId();
        List<String> tasks = svc.getTasks(process, processInstanceIdString, securityPolicy).orElseThrow().stream().map(wi -> taskIds.get(wi.getName()).instances().get(wi.getId()).asLocalUri().path()).collect(Collectors.toList());
        MapDataContext mdc = MapDataContext.create();
        mdc.set("tasks", tasks);
        return ExtendedDataContext.of(mdc, EmptyDataContext.Instance);
    } catch (IllegalArgumentException e) {
        // /tasks/id
        TaskInstanceId taskInstanceId = ProcessIdParser.select(id, TaskInstanceId.class);
        ProcessInstanceId instanceId = taskInstanceId.taskId().processInstanceId();
        Process<MappableToModel<Model>> process = parseProcess(instanceId.processId());
        String taskInstanceIdString = taskInstanceId.taskInstanceId();
        String processInstanceIdString = instanceId.processInstanceId();
        WorkItem workItem = svc.getTask(process, processInstanceIdString, taskInstanceIdString, securityPolicy, Function.identity()).orElseThrow(() -> new IllegalArgumentException("Cannot find ID " + id.asLocalUri().path()));
        return ExtendedDataContext.ofData(MapDataContext.of(workItem.getResults()));
    }
}
Also used : org.kie.kogito.process(org.kie.kogito.process) HumanTaskNode(org.jbpm.workflow.core.node.HumanTaskNode) Collection(java.util.Collection) Policy(org.kie.kogito.incubation.processes.services.contexts.Policy) MappableToModel(org.kie.kogito.MappableToModel) HumanTaskHelper(org.jbpm.process.instance.impl.humantask.HumanTaskHelper) SecurityPolicy(org.kie.kogito.auth.SecurityPolicy) HumanTaskService(org.kie.kogito.incubation.processes.services.humantask.HumanTaskService) UnitOfWorkExecutor(org.kie.kogito.services.uow.UnitOfWorkExecutor) Application(org.kie.kogito.Application) KogitoNode(org.kie.kogito.internal.process.runtime.KogitoNode) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) org.kie.kogito.incubation.processes(org.kie.kogito.incubation.processes) List(java.util.List) Model(org.kie.kogito.Model) org.kie.kogito.incubation.common(org.kie.kogito.incubation.common) IdentityProviders(org.kie.kogito.auth.IdentityProviders) Map(java.util.Map) Process(org.kie.kogito.process.Process) TaskMetaDataContext(org.kie.kogito.incubation.processes.services.contexts.TaskMetaDataContext) TaskMetaDataContext(org.kie.kogito.incubation.processes.services.contexts.TaskMetaDataContext) Process(org.kie.kogito.process.Process) MappableToModel(org.kie.kogito.MappableToModel) SecurityPolicy(org.kie.kogito.auth.SecurityPolicy) MappableToModel(org.kie.kogito.MappableToModel) Model(org.kie.kogito.Model)

Example 2 with MappableToModel

use of org.kie.kogito.MappableToModel in project kogito-runtimes by kiegroup.

the class StatefulProcessServiceImpl method signal.

@Override
public ExtendedDataContext signal(LocalId localId, DataContext dataContext) {
    SignalId signalId = ProcessIdParser.select(localId, SignalId.class);
    Process<MappableToModel<Model>> process = parseProcess(signalId.processInstanceId().processId());
    Model m = svc.signalProcessInstance(process, signalId.processInstanceId().processInstanceId(), dataContext, signalId.signalId()).orElseThrow();
    MapDataContext data = MapDataContext.from(m.toMap());
    ProcessMetaDataContext meta = ProcessMetaDataContext.of(signalId.processInstanceId());
    return ExtendedDataContext.of(meta, data);
}
Also used : ProcessMetaDataContext(org.kie.kogito.incubation.processes.services.contexts.ProcessMetaDataContext) MappableToModel(org.kie.kogito.MappableToModel) MappableToModel(org.kie.kogito.MappableToModel) Model(org.kie.kogito.Model) SignalId(org.kie.kogito.incubation.processes.SignalId)

Example 3 with MappableToModel

use of org.kie.kogito.MappableToModel in project kogito-runtimes by kiegroup.

the class StatefulProcessServiceImpl method update.

@Override
public ExtendedDataContext update(LocalId localId, DataContext dataContext) {
    ProcessInstanceId instanceId = ProcessIdParser.select(localId, ProcessInstanceId.class);
    Process<MappableToModel<Model>> process = parseProcess(instanceId.processId());
    MappableToModel<Model> model = (MappableToModel<Model>) toModel(dataContext, process);
    Optional<Model> optionalModel = svc.update(process, instanceId.processInstanceId(), model);
    Model m = optionalModel.orElseThrow();
    Map<String, Object> map = m.toMap();
    return ExtendedDataContext.ofData(MapDataContext.from(map));
}
Also used : MappableToModel(org.kie.kogito.MappableToModel) MappableToModel(org.kie.kogito.MappableToModel) Model(org.kie.kogito.Model) ProcessInstanceId(org.kie.kogito.incubation.processes.ProcessInstanceId)

Example 4 with MappableToModel

use of org.kie.kogito.MappableToModel in project kogito-runtimes by kiegroup.

the class StatefulProcessServiceImpl method get.

@Override
public ExtendedDataContext get(LocalId localId) {
    ProcessInstanceId processInstanceId = ProcessIdParser.select(localId, ProcessInstanceId.class);
    Process<MappableToModel<Model>> process = parseProcess(processInstanceId.processId());
    Model m = svc.findById(process, processInstanceId.processInstanceId()).orElseThrow();
    ProcessMetaDataContext meta = ProcessMetaDataContext.of(localId);
    MapDataContext data = MapDataContext.of(m.toMap());
    return ExtendedDataContext.of(meta, data);
}
Also used : ProcessMetaDataContext(org.kie.kogito.incubation.processes.services.contexts.ProcessMetaDataContext) MappableToModel(org.kie.kogito.MappableToModel) MappableToModel(org.kie.kogito.MappableToModel) Model(org.kie.kogito.Model) ProcessInstanceId(org.kie.kogito.incubation.processes.ProcessInstanceId)

Example 5 with MappableToModel

use of org.kie.kogito.MappableToModel in project kogito-runtimes by kiegroup.

the class HumanTaskServiceImpl method transition.

@Override
public ExtendedDataContext transition(LocalId id, DataContext dataContext) {
    ExtendedDataContext edc = dataContext.as(ExtendedDataContext.class);
    TaskMetaDataContext mdc = edc.meta().as(TaskMetaDataContext.class);
    SecurityPolicy securityPolicy = convertPolicyObject(mdc.policy());
    String phase = mdc.phase();
    Objects.requireNonNull(phase, "Phase must be specified");
    TaskInstanceId taskInstanceId = ProcessIdParser.select(id, TaskInstanceId.class);
    // must validate the task id
    TaskId taskId = taskInstanceId.taskId();
    ProcessInstanceId instanceId = taskId.processInstanceId();
    Process<MappableToModel<Model>> process = parseProcess(instanceId.processId());
    Collection<KogitoNode> tasks = process.findNodes(n -> n instanceof HumanTaskNode && ((HumanTaskNode) n).getWork().getParameter("TaskName").equals(taskId.taskId()));
    if (tasks.isEmpty()) {
        throw new IllegalArgumentException("No such taskId " + taskId.taskId());
    }
    String taskInstanceIdString = taskInstanceId.taskInstanceId();
    String processInstanceIdString = instanceId.processInstanceId();
    Map<String, Object> map = dataContext.as(MapDataContext.class).toMap();
    MappableToModel<Model> model = process.createModel();
    model.fromMap(map);
    Model result = svc.taskTransition(process, processInstanceIdString, taskInstanceIdString, phase, securityPolicy, model).orElseThrow();
    return ExtendedDataContext.ofData(MapDataContext.of(result.toMap()));
}
Also used : TaskMetaDataContext(org.kie.kogito.incubation.processes.services.contexts.TaskMetaDataContext) KogitoNode(org.kie.kogito.internal.process.runtime.KogitoNode) MappableToModel(org.kie.kogito.MappableToModel) SecurityPolicy(org.kie.kogito.auth.SecurityPolicy) MappableToModel(org.kie.kogito.MappableToModel) Model(org.kie.kogito.Model) HumanTaskNode(org.jbpm.workflow.core.node.HumanTaskNode)

Aggregations

MappableToModel (org.kie.kogito.MappableToModel)7 Model (org.kie.kogito.Model)7 HumanTaskNode (org.jbpm.workflow.core.node.HumanTaskNode)3 SecurityPolicy (org.kie.kogito.auth.SecurityPolicy)3 ProcessInstanceId (org.kie.kogito.incubation.processes.ProcessInstanceId)3 ProcessMetaDataContext (org.kie.kogito.incubation.processes.services.contexts.ProcessMetaDataContext)3 TaskMetaDataContext (org.kie.kogito.incubation.processes.services.contexts.TaskMetaDataContext)3 KogitoNode (org.kie.kogito.internal.process.runtime.KogitoNode)3 Collection (java.util.Collection)2 List (java.util.List)2 Map (java.util.Map)2 Objects (java.util.Objects)2 Function (java.util.function.Function)2 Collectors (java.util.stream.Collectors)2 HumanTaskHelper (org.jbpm.process.instance.impl.humantask.HumanTaskHelper)2 Application (org.kie.kogito.Application)2 IdentityProviders (org.kie.kogito.auth.IdentityProviders)2 org.kie.kogito.incubation.common (org.kie.kogito.incubation.common)2 org.kie.kogito.incubation.processes (org.kie.kogito.incubation.processes)2 Policy (org.kie.kogito.incubation.processes.services.contexts.Policy)2