Skip to content

Commit

Permalink
[incubator-kie-issues-1439] UserTask Decouple codegen and interface f…
Browse files Browse the repository at this point in the history
…rom engine
  • Loading branch information
elguardian committed Sep 9, 2024
1 parent c0b56ea commit 65f096a
Show file tree
Hide file tree
Showing 249 changed files with 5,846 additions and 12,791 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@
import java.util.Map;
import java.util.function.Function;

import org.kie.kogito.internal.process.runtime.WorkItemNotFoundException;
import org.kie.kogito.internal.process.workitem.InvalidLifeCyclePhaseException;
import org.kie.kogito.internal.process.workitem.InvalidTransitionException;
import org.kie.kogito.internal.process.workitem.NotAuthorizedException;
import org.kie.kogito.internal.process.workitem.WorkItemExecutionException;
import org.kie.kogito.internal.process.workitem.WorkItemNotFoundException;
import org.kie.kogito.process.NodeInstanceNotFoundException;
import org.kie.kogito.process.NodeNotFoundException;
import org.kie.kogito.process.ProcessInstanceDuplicatedException;
import org.kie.kogito.process.ProcessInstanceExecutionException;
import org.kie.kogito.process.ProcessInstanceNotFoundException;
import org.kie.kogito.process.VariableViolationException;
import org.kie.kogito.process.workitem.InvalidLifeCyclePhaseException;
import org.kie.kogito.process.workitem.InvalidTransitionException;
import org.kie.kogito.process.workitem.NotAuthorizedException;
import org.kie.kogito.process.workitem.WorkItemExecutionException;

public abstract class BaseExceptionsHandler<T> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.kie.kogito.internal.process.runtime.WorkItemNotFoundException;
import org.kie.kogito.internal.process.workitem.InvalidLifeCyclePhaseException;
import org.kie.kogito.internal.process.workitem.InvalidTransitionException;
import org.kie.kogito.internal.process.workitem.NotAuthorizedException;
import org.kie.kogito.internal.process.workitem.WorkItemExecutionException;
import org.kie.kogito.internal.process.workitem.WorkItemNotFoundException;
import org.kie.kogito.process.NodeInstanceNotFoundException;
import org.kie.kogito.process.ProcessInstanceDuplicatedException;
import org.kie.kogito.process.ProcessInstanceExecutionException;
import org.kie.kogito.process.ProcessInstanceNotFoundException;
import org.kie.kogito.process.VariableViolationException;
import org.kie.kogito.process.workitem.InvalidLifeCyclePhaseException;
import org.kie.kogito.process.workitem.InvalidTransitionException;
import org.kie.kogito.process.workitem.NotAuthorizedException;
import org.kie.kogito.process.workitem.WorkItemExecutionException;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
package org.kie.kogito.internal.process.event;

import org.kie.api.event.process.ProcessEventListener;
import org.kie.api.event.usertask.UserTaskAssignmentEvent;
import org.kie.api.event.usertask.UserTaskAttachmentEvent;
import org.kie.api.event.usertask.UserTaskCommentEvent;
import org.kie.api.event.usertask.UserTaskDeadlineEvent;
import org.kie.api.event.usertask.UserTaskStateEvent;
import org.kie.api.event.usertask.UserTaskVariableEvent;

public interface KogitoProcessEventListener extends ProcessEventListener {

Expand All @@ -43,50 +37,4 @@ default void beforeWorkItemTransition(ProcessWorkItemTransitionEvent event) {
*/
default void afterWorkItemTransition(ProcessWorkItemTransitionEvent event) {
}

// for user tasks

default void onUserTaskDeadline(UserTaskDeadlineEvent event) {
// nothing
}

default void onUserTaskState(UserTaskStateEvent event) {
// nothing
}

default void onUserTaskAssignment(UserTaskAssignmentEvent event) {
// nothing
}

default void onUserTaskInputVariable(UserTaskVariableEvent event) {
// nothing
}

default void onUserTaskOutputVariable(UserTaskVariableEvent event) {
// nothing
}

default void onUserTaskAttachmentAdded(UserTaskAttachmentEvent event) {
// nothing
}

default void onUserTaskAttachmentDeleted(UserTaskAttachmentEvent event) {
// nothing
}

default void onUserTaskAttachmentChange(UserTaskAttachmentEvent event) {
// nothing
}

default void onUserTaskCommentChange(UserTaskCommentEvent event) {
// nothing
}

default void onUserTaskCommentAdded(UserTaskCommentEvent event) {
// nothing
}

default void onUserTaskCommentDeleted(UserTaskCommentEvent event) {
// nothing
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,12 @@
package org.kie.kogito.internal.process.event;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.kie.api.runtime.KieRuntime;
import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.process.workitem.Attachment;
import org.kie.kogito.process.workitem.Comment;
import org.kie.kogito.process.workitem.HumanTaskWorkItem;
import org.kie.kogito.process.workitem.Transition;
import org.kie.kogito.internal.process.workitem.KogitoWorkItem;
import org.kie.kogito.internal.process.workitem.WorkItemTransition;

public interface KogitoProcessEventSupport {

Expand Down Expand Up @@ -63,9 +58,9 @@ void fireAfterVariableChanged(String name, String id, Object oldValue, Object ne

void fireAfterSLAViolated(KogitoProcessInstance instance, KogitoNodeInstance nodeInstance, KieRuntime kruntime);

void fireBeforeWorkItemTransition(KogitoProcessInstance instance, KogitoWorkItem workitem, Transition<?> transition, KieRuntime kruntime);
void fireBeforeWorkItemTransition(KogitoProcessInstance instance, KogitoWorkItem workitem, WorkItemTransition transition, KieRuntime kruntime);

void fireAfterWorkItemTransition(KogitoProcessInstance instance, KogitoWorkItem workitem, Transition<?> transition, KieRuntime kruntime);
void fireAfterWorkItemTransition(KogitoProcessInstance instance, KogitoWorkItem workitem, WorkItemTransition transition, KieRuntime kruntime);

void fireOnSignal(KogitoProcessInstance instance, KogitoNodeInstance nodeInstance, KieRuntime kruntime, String signalName, Object signalObject);

Expand All @@ -75,93 +70,6 @@ void fireAfterVariableChanged(String name, String id, Object oldValue, Object ne

void fireOnMigration(KogitoProcessInstance processInstance, KieRuntime runtime);

// user tasks events

void fireOneUserTaskStateChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
String oldPhaseStatus, String newPhaseStatus);

void fireOnUserTaskNotStartedDeadline(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
HumanTaskWorkItem workItem,
Map<String, Object> notification,
KieRuntime kruntime);

void fireOnUserTaskNotCompletedDeadline(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
HumanTaskWorkItem workItem,
Map<String, Object> notification,
KieRuntime kruntime);

enum AssignmentType {
USER_OWNERS,
USER_GROUPS,
USERS_EXCLUDED,
ADMIN_GROUPS,
ADMIN_USERS
};

void fireOnUserTaskAssignmentChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
AssignmentType assignmentType,
Set<String> oldUsersId, Set<String> newUsersId);

void fireOnUserTaskInputVariableChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
String variableName,
Object newValue, Object oldValue);

void fireOnUserTaskOutputVariableChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
String variableName,
Object newValue, Object oldValue);

void fireOnUserTaskAttachmentAdded(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Attachment addedAttachment);

void fireOnUserTaskAttachmentDeleted(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Attachment deletedAttachment);

void fireOnUserTaskAttachmentChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Attachment oldAttachment, Attachment newAttachment);

void fireOnUserTaskCommentChange(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Comment oldComment, Comment newComment);

void fireOnUserTaskCommentDeleted(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Comment deletedComment);

void fireOnUserTaskCommentAdded(
KogitoProcessInstance instance,
KogitoNodeInstance nodeInstance,
KieRuntime kruntime,
Comment addedComment);

void reset();

void addEventListener(KogitoProcessEventListener listener);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,13 @@
package org.kie.kogito.internal.process.event;

import org.kie.api.event.process.ProcessEvent;
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.process.workitem.Transition;
import org.kie.kogito.internal.process.workitem.KogitoWorkItem;
import org.kie.kogito.internal.process.workitem.WorkItemTransition;

/**
* An event when a work item has transition between life cycle phases
*/
public interface ProcessWorkItemTransitionEvent
extends
ProcessEvent {
public interface ProcessWorkItemTransitionEvent extends ProcessEvent {

/**
* Returns work item being transitioned
Expand All @@ -41,7 +39,7 @@ public interface ProcessWorkItemTransitionEvent
*
* @return transition
*/
Transition<?> getTransition();
WorkItemTransition getTransition();

/**
* Indicated is the transition has already been done.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.kie.api.runtime.rule.AgendaFilter;
import org.kie.kogito.Application;
import org.kie.kogito.internal.process.event.KogitoProcessEventSupport;
import org.kie.kogito.internal.process.workitem.KogitoWorkItemManager;
import org.kie.kogito.jobs.JobsService;

public interface KogitoProcessRuntime {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*/
package org.kie.kogito.internal.process.runtime;

import org.kie.kogito.internal.process.workitem.KogitoWorkItem;

public interface KogitoWorkItemNodeInstance extends KogitoNodeInstance {

KogitoWorkItem getWorkItem();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.kie.kogito.process.workitem;
package org.kie.kogito.internal.process.workitem;

/**
* Thrown when there is no such life cycle phase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.kie.kogito.process.workitem;
package org.kie.kogito.internal.process.workitem;

/**
* Thrown when given work item transition cannot be performed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.kie.kogito.internal.process.runtime;
package org.kie.kogito.internal.process.workitem;

import java.util.Date;
import java.util.Map;

import org.kie.api.runtime.process.WorkItem;
import org.kie.kogito.process.workitem.Policy;
import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;

public interface KogitoWorkItem extends WorkItem {

Expand Down Expand Up @@ -83,14 +85,9 @@ public interface KogitoWorkItem extends WorkItem {
*/
KogitoProcessInstance getProcessInstance();

/**
* Enforces given policies on this work item. It must false in case of any policy
* violations.
*
* @param policies optional policies to be enforced
* @return return true if this work item can enforce all policies otherwise false
*/
default boolean enforce(Policy<?>... policies) {
return true;
void setOutput(String name, Object value);

default void setOutputs(Map<String, Object> outputs) {
outputs.forEach(this::setOutput);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,38 +16,42 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.kie.kogito.internal.process.runtime;
package org.kie.kogito.internal.process.workitem;

import org.kie.kogito.process.workitem.Transition;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

public interface KogitoWorkItemHandler {

/**
* The given work item should be executed.
* Returns name that it should be registered with, by default simple class name;
*
* @param workItem the work item that should be executed
* @param manager the manager that requested the work item to be executed
* @return name that should this handler be registered with
*/
void executeWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager manager);
default String getName() {
return getClass().getSimpleName();
}

/**
* The given work item should be aborted.
*
* @param workItem the work item that should be aborted
* @param manager the manager that requested the work item to be aborted
/*
* Transition to another phase from initial
*/
void abortWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager manager);
Optional<WorkItemTransition> transitionToPhase(KogitoWorkItemManager manager, KogitoWorkItem workItem, WorkItemTransition transition);

Set<String> allowedTransitions(String phaseStatus);

WorkItemTransition newTransition(String phaseId, String phaseStatus, Map<String, Object> map, Policy... policy);

/**
* Returns name that it should be registered with, by default simple class name;
* The given work item should be activate.
*
* @return name that should this handler be registered with
* @param workItem the work item that should be executed
* @param manager the manager that requested the work item to be executed
*/
default String getName() {
return getClass().getSimpleName();
}
WorkItemTransition startingTransition(Map<String, Object> data, Policy... policies);

WorkItemTransition completeTransition(String phaseStatus, Map<String, Object> data, Policy... policies);

WorkItemTransition abortTransition(String phaseStatus, Policy... policies);

default void transitionToPhase(KogitoWorkItem workItem, KogitoWorkItemManager manager, Transition<?> transition) {
throw new UnsupportedOperationException();
}
}
Loading

0 comments on commit 65f096a

Please sign in to comment.