Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ class CaseMigrationHelper extends AbstractMigrationHelper<Case> {
*/
void migratePetriNet(Case useCase, PetriNet newNet, MigrationErrorPolicy errorPolicy = defaultErrorPolicy()) {
log.debug("Starting migratePetriNet for case: ${useCase.stringId}, new net: ${newNet.stringId}")
ProcessResourceId newCaseId = new ProcessResourceId(newNet.getStringId(), useCase.get_id().getObjectId())
ProcessResourceId newCaseId = new ProcessResourceId(newNet.getIdentifier(), useCase.get_id().getObjectId())
useCase.set_id(newCaseId)
useCase.setPetriNetObjectId(newNet.objectId)
log.trace("Updated petriNet reference for case: ${useCase.stringId} to net: ${newNet.stringId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ class TaskMigrationHelper extends AbstractMigrationHelper<Task> {
Task oldTask = taskService.findOne(taskPair.task)
log.trace("Updating task roles and permissions for task: ${oldTask.stringId}")
oldTask.setProcessId(net.stringId)
oldTask.setProcessIdentifier(net.identifier)
oldTask.setRoles(newTransition.roles)
oldTask.setNegativeViewRoles(newTransition.negativeViewRoles)
oldTask.resolveViewRoles()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@ protected ProcessRole initRole(Role importRole) {
if (importRole.isGlobal() != null && importRole.isGlobal()) {
role.setGlobal(importRole.isGlobal());
} else {
role.set_id(new ProcessResourceId(new ObjectId(net.getStringId())));
role.set_id(new ProcessResourceId(net.getIdentifier(), new ObjectId()));
role.setProcessId(net.getStringId());
role.setProcessTitle(net.getTitle());
role.setProcessIdentifier(net.getIdentifier());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -886,6 +886,7 @@ private Task createFromTransition(Transition transition, Case useCase) {
final Task task = com.netgrif.application.engine.adapter.spring.workflow.domain.Task.with()
.title(transition.getTitle())
.processId(useCase.getPetriNetId())
.processIdentifier(useCase.getProcessIdentifier())
.caseId(useCase.get_id().toString())
.transitionId(transition.getImportId())
.layout(transition.getLayout())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public ProcessRole() {
if (this.getProcessId() == null) {
_id = new ProcessResourceId();
} else {
_id = new ProcessResourceId(new ObjectId(this.getProcessId()));
_id = new ProcessResourceId(processIdentifier, new ObjectId());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ protected Case() {

public Case(PetriNet petriNet) {
this();
this._id = new ProcessResourceId(petriNet.getObjectId());
this._id = new ProcessResourceId(petriNet.getIdentifier(), new ObjectId());
petriNetObjectId = petriNet.getObjectId();
processIdentifier = petriNet.getIdentifier();
this.petriNet = petriNet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.netgrif.application.engine.objects.workflow.domain;

import lombok.Getter;
import lombok.Setter;
import org.bson.types.ObjectId;

import java.io.Serial;
Expand All @@ -10,6 +11,7 @@
import java.util.Objects;

@Getter
@Setter
public final class ProcessResourceId implements Comparable<ProcessResourceId>, Serializable {

@Serial
Expand All @@ -23,39 +25,38 @@ public final class ProcessResourceId implements Comparable<ProcessResourceId>, S
// todo add example values to javadoc

private ObjectId objectId;

private String shortProcessIdentifier;

@Deprecated(since = "7.0.0", forRemoval = true)
private String shortProcessId;

public ProcessResourceId() {
this.objectId = new ObjectId();
this.shortProcessId = NONE_SHORT_ID_VALUE;
}

public ProcessResourceId(ObjectId processId) {
this.objectId = new ObjectId();
this.shortProcessId = generateShortProcessId(processId.toString());
this.shortProcessIdentifier = NONE_SHORT_ID_VALUE;
}

public ProcessResourceId(String processId, String objectId) {
public ProcessResourceId(String processIdentifier, String objectId) {
this.objectId = new ObjectId(objectId);
this.shortProcessId = generateShortProcessId(processId);
this.shortProcessIdentifier = generateShortProcessIdentifier(processIdentifier);
}

public ProcessResourceId(String processId, ObjectId objectId) {
public ProcessResourceId(String processIdentifier, ObjectId objectId) {
this.objectId = objectId;
this.shortProcessId = generateShortProcessId(processId);
this.shortProcessIdentifier = generateShortProcessIdentifier(processIdentifier);
}

public ProcessResourceId(String compositeId) {
String[] parts = compositeId.split("-");
String[] parts = compositeId.split(ID_SEPARATOR);
if (parts.length != 2) {
throw new IllegalArgumentException("Invalid composite ID format: " + compositeId);
}
this.shortProcessId = parts[0];
this.shortProcessIdentifier = parts[0];
this.objectId = new ObjectId(parts[1]);
}

public String getFullId() {
return shortProcessId + ID_SEPARATOR + objectId.toHexString();
return shortProcessIdentifier + ID_SEPARATOR + objectId.toHexString();
}

public String getStringId() {
Expand All @@ -75,12 +76,28 @@ public String toString() {
return getFullId();
}

private static String generateShortProcessId(String processId) {
if (processId == null || processId.isEmpty()) {
public static String decodeShortProcessId(String shortProcessId) {
if (shortProcessId == null || shortProcessId.isEmpty()) {
return null;
}
BigInteger number = BigInteger.ZERO;
for (char c : shortProcessId.toCharArray()) {
number = number.multiply(CHAR_ARRAY_LENGTH);
int index = CHAR_ARRAY.indexOf(c);
if (index == -1) {
throw new IllegalArgumentException("Invalid character in short process ID: " + c);
}
number = number.add(BigInteger.valueOf(index));
}
return number.toString(16);
}

private static String generateShortProcessIdentifier(String processIdentifier) {
if (processIdentifier == null || processIdentifier.isEmpty()) {
return null;
}
try {
BigInteger number = new BigInteger(processId, 16);
BigInteger number = new BigInteger(1, processIdentifier.getBytes());
StringBuilder shortIdBuilder = new StringBuilder();

while (number.compareTo(BigInteger.ZERO) > 0) {
Expand All @@ -91,11 +108,11 @@ private static String generateShortProcessId(String processId) {

return shortIdBuilder.reverse().toString();
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid input string for encoding: " + processId, e);
throw new IllegalArgumentException("Invalid input string for encoding: " + processIdentifier, e);
}
}

public static String decodeShortProcessId(String shortProcessId) {
public static String decodeShortProcessIdentifier(String shortProcessId) {
if (shortProcessId == null || shortProcessId.isEmpty()) {
return null;
}
Expand All @@ -108,7 +125,7 @@ public static String decodeShortProcessId(String shortProcessId) {
}
number = number.add(BigInteger.valueOf(index));
}
return number.toString(16);
return new String(number.toByteArray());
}

@Override
Expand All @@ -121,12 +138,12 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProcessResourceId that = (ProcessResourceId) o;
return Objects.equals(objectId, that.objectId) && Objects.equals(shortProcessId, that.shortProcessId);
return Objects.equals(objectId, that.objectId) && Objects.equals(shortProcessIdentifier, that.shortProcessIdentifier);
}

@Override
public int hashCode() {
return Objects.hash(objectId, shortProcessId);
return Objects.hash(objectId, shortProcessIdentifier);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,18 @@ public abstract class Task implements Serializable {
@Serial
private static final long serialVersionUID = -7112277728921547546L;

@Setter
private ProcessResourceId _id;

@Setter
@Getter
@Indexed
private String processId;

@Getter
@Indexed
private String processIdentifier;

@Getter
@Setter
@Indexed
Expand Down Expand Up @@ -169,8 +175,8 @@ public abstract class Task implements Serializable {
private Map<String, String> tags = new HashMap<>();

public Task() {
if (this.processId != null && !this.processId.isEmpty()) {
this._id = new ProcessResourceId(new ObjectId(this.processId));
if (this.processIdentifier != null && !this.processIdentifier.isEmpty()) {
this._id = new ProcessResourceId(this.processIdentifier, new ObjectId());
}
}

Expand All @@ -179,17 +185,17 @@ public ProcessResourceId getObjectId() {
return _id;
}

public void setProcessId(String processId) {
this.processId = processId;
if (processId != null && !processId.isEmpty()) {
this._id = new ProcessResourceId(new ObjectId(processId));
public void setProcessIdentifier(String processIdentifier) {
this.processIdentifier = processIdentifier;
if (processIdentifier != null && !processIdentifier.isEmpty()) {
this._id = new ProcessResourceId(processIdentifier, new ObjectId());
}
}

public ProcessResourceId get_id() {
if (this._id == null) {
this._id = this.processId != null && !this.processId.isEmpty()
? new ProcessResourceId(new ObjectId(this.processId))
? new ProcessResourceId(this.processIdentifier, new ObjectId())
: new ProcessResourceId();
}
return this._id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ public Task() {
}

@Builder(builderMethodName = "with")
public Task(ProcessResourceId _id, String processId, String caseId, String transitionId, TaskLayout layout, I18nString title,
public Task(ProcessResourceId _id, String processId, String processIdentifier, String caseId, String transitionId, TaskLayout layout, I18nString title,
String caseColor, String caseTitle, Integer priority, ActorRef assignee, AbstractUser user,
List<Trigger> triggers, Map<String, Map<String, Boolean>> roles, Map<String, Map<String, Boolean>> actorRefs,
Map<String, Map<String, Boolean>> actors, List<String> viewRoles, List<String> viewActorRefs, List<String> viewActors,
List<String> negativeViewRoles, List<String> negativeViewActors, LocalDateTime startDate, LocalDateTime finishDate,
String finishedBy, String transactionId, Boolean requiredFilled, LinkedHashSet<String> immediateDataFields, List<Field<?>> immediateData,
String icon, AssignPolicy assignPolicy, DataFocusPolicy dataFocusPolicy, FinishPolicy finishPolicy, Map<EventType, I18nString> eventTitles,
Map<String, Boolean> assignedUserPolicy, Map<String, Integer> consumedTokens, Map<String, String> tags) {
super(_id, processId, caseId, transitionId, layout, title, caseColor, caseTitle, priority, assignee, user,
super(_id, processId, processIdentifier, caseId, transitionId, layout, title, caseColor, caseTitle, priority, assignee, user,
triggers, roles, actorRefs, actors, viewRoles, viewActorRefs, viewActors, negativeViewRoles, negativeViewActors,
startDate, finishDate, finishedBy, transactionId, requiredFilled, immediateDataFields, immediateData, icon,
assignPolicy, dataFocusPolicy, finishPolicy, eventTitles, assignedUserPolicy, consumedTokens, tags);
Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@
<maven-clean-plugin.version>3.4.1</maven-clean-plugin.version>

<bson.version>5.8.0</bson.version>
<jackson.version>3.1.2</jackson.version>
<jackson.version.jsr310>3.1.2</jackson.version.jsr310>
<jackson.version>3.1.5</jackson.version>
<jackson.version.jsr310>3.1.5</jackson.version.jsr310>
<spring.boot.version>4.1.0</spring.boot.version>
<springdoc.version>3.0.3</springdoc.version>

Expand Down
Loading