com.netgrif.application.engine.petrinet.domain.Transition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of application-engine Show documentation
Show all versions of application-engine Show documentation
System provides workflow management functions including user, role and data management.
package com.netgrif.application.engine.petrinet.domain;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.FieldBehavior;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.FieldLayout;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.Action;
import com.netgrif.application.engine.petrinet.domain.events.DataEvent;
import com.netgrif.application.engine.petrinet.domain.events.DataEventType;
import com.netgrif.application.engine.petrinet.domain.events.Event;
import com.netgrif.application.engine.petrinet.domain.events.EventType;
import com.netgrif.application.engine.petrinet.domain.layout.TaskLayout;
import com.netgrif.application.engine.petrinet.domain.policies.AssignPolicy;
import com.netgrif.application.engine.petrinet.domain.policies.DataFocusPolicy;
import com.netgrif.application.engine.petrinet.domain.policies.FinishPolicy;
import com.netgrif.application.engine.workflow.domain.triggers.Trigger;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.*;
import java.util.stream.Collectors;
@Document
public class Transition extends Node {
@Field("dataGroups")
@Getter
@Setter
private Map dataGroups;
@Field("dataSet")
@Getter
@Setter
private LinkedHashMap dataSet;
@Field("roles")
@Getter
@Setter
private Map> roles;
@Getter
@Setter
private List negativeViewRoles;
@Field("users")
@Getter
@Setter
private Map> userRefs;
@Field("triggers")
@Getter
@Setter
private List triggers;
@Getter
@Setter
private TaskLayout layout;
@Getter
@Setter
private Integer priority;
@Getter
@Setter
private AssignPolicy assignPolicy;
@Getter
@Setter
private String icon;
@Getter
@Setter
private DataFocusPolicy dataFocusPolicy;
@Getter
@Setter
private FinishPolicy finishPolicy;
@Getter
@Setter
private Map events;
@Getter
@Setter
private Map assignedUserPolicy;
@Getter
@Setter
private String defaultRoleId;
public Transition() {
super();
dataSet = new LinkedHashMap<>();
roles = new HashMap<>();
userRefs = new HashMap<>();
triggers = new LinkedList<>();
negativeViewRoles = new LinkedList<>();
dataGroups = new LinkedHashMap<>();
assignPolicy = AssignPolicy.MANUAL;
dataFocusPolicy = DataFocusPolicy.MANUAL;
finishPolicy = FinishPolicy.MANUAL;
events = new HashMap<>();
assignedUserPolicy = new HashMap<>();
}
public void addDataSet(String field, Set behavior, Map events, FieldLayout layout, Component component){
if(dataSet.containsKey(field) && dataSet.get(field) != null){
if(behavior != null) dataSet.get(field).getBehavior().addAll(behavior);
if(events != null) dataSet.get(field).setEvents(events);
if(layout != null) dataSet.get(field).setLayout(layout);
if(component != null) dataSet.get(field).setComponent(component);
} else {
dataSet.put(field, new DataFieldLogic(behavior, events, layout, component));
}
}
public void setDataEvents(String field, Map events){
if(dataSet.containsKey(field)){
dataSet.get(field).setEvents(events);
}
}
public void addRole(String roleId, Map permissions) {
if (roles.containsKey(roleId) && roles.get(roleId) != null) {
roles.get(roleId).putAll(permissions);
} else {
roles.put(roleId, permissions);
}
}
public void addNegativeViewRole(String roleId) {
negativeViewRoles.add(roleId);
}
public void addUserRef(String userRefId, Map permissions) {
if (userRefs.containsKey(userRefId) && userRefs.get(userRefId) != null) {
userRefs.get(userRefId).putAll(permissions);
} else {
userRefs.put(userRefId, permissions);
}
}
public void addDataGroup(DataGroup dataGroup) {
dataGroups.put(dataGroup.getStringId(), dataGroup);
}
public void addTrigger(Trigger trigger) {
this.triggers.add(trigger);
}
public boolean isDisplayable(String fieldId) {
DataFieldLogic logic = dataSet.get(fieldId);
return logic != null && logic.isDisplayable();
}
public List getImmediateData() {
return dataSet.entrySet().stream().filter(entry -> entry.getValue().getBehavior().contains(FieldBehavior.IMMEDIATE))
.map(Map.Entry::getKey).collect(Collectors.toList());
}
public List getPreFinishActions() {
return getPreActions(EventType.FINISH);
}
public List getPostFinishActions() {
return getPostActions(EventType.FINISH);
}
public List getPreAssignActions() {
return getPreActions(EventType.ASSIGN);
}
public List getPostAssignActions() {
return getPostActions(EventType.ASSIGN);
}
public List getPreCancelActions() {
return getPreActions(EventType.CANCEL);
}
public List getPostCancelActions() {
return getPostActions(EventType.CANCEL);
}
public List getPreDelegateActions() {
return getPreActions(EventType.DELEGATE);
}
public List getPostDelegateActions() {
return getPostActions(EventType.DELEGATE);
}
private List getPreActions(EventType type) {
if (events.containsKey(type))
return events.get(type).getPreActions();
return new LinkedList<>();
}
private List getPostActions(EventType type) {
if (events.containsKey(type))
return events.get(type).getPostActions();
return new LinkedList<>();
}
public I18nString getFinishMessage() {
return getMessage(EventType.FINISH);
}
public I18nString getAssignMessage() {
return getMessage(EventType.ASSIGN);
}
public I18nString getCancelMessage() {
return getMessage(EventType.CANCEL);
}
public I18nString getDelegateMessage() {
return getMessage(EventType.DELEGATE);
}
private I18nString getMessage(EventType type) {
if (events.containsKey(type))
return events.get(type).getMessage();
return null;
}
@Override
public String toString() {
return this.getTitle().toString();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Transition that = (Transition) o;
return importId.equals(that.importId);
}
public void addEvent(Event event) {
events.put(event.getType(), event);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy