diff options
Diffstat (limited to 'id/server/idserverlib')
2 files changed, 15 insertions, 14 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessInstance.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessInstance.java index ef69451eb..a6cf3b57f 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessInstance.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessInstance.java @@ -5,6 +5,8 @@ import java.util.Date;  import org.apache.commons.lang3.RandomStringUtils;  import org.apache.commons.lang3.time.DurationFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.model.ProcessDefinition; @@ -27,21 +29,12 @@ public class ProcessInstance implements Serializable {  	private ExecutionContext executionContext;  	private ProcessInstanceState state = ProcessInstanceState.NOT_STARTED; -	/** -	 * Creates a new process instance, based on a given process definition.<p/> -	 * An execution context will be created internally. -	 *  -	 * @param processDefinition -	 *            The process definition. -	 */ -	ProcessInstance(ProcessDefinition processDefinition) { -		this(processDefinition, null); -	} +	private Logger log = LoggerFactory.getLogger(getClass());  	/**  	 * Creates a new process instance, based on a given process definition and a  	 * given execution context. If the given execution context is {@code null} a new execution context will be created.<p/> -	 * The process instance id of the execution context will automatically be set (and overwritten if already set). +	 * The process instance id of the execution context will be newly generated if it is {@code null} in the execution context.  	 *   	 * @param processDefinition  	 *            The process definition. @@ -51,12 +44,17 @@ public class ProcessInstance implements Serializable {  	ProcessInstance(ProcessDefinition processDefinition, ExecutionContext executionContext) {  		this.processDefinition = processDefinition;  		nextId = processDefinition.getStartEvent().getId(); -		String pdIdLocalPart = RandomStringUtils.random(RND_ID_LENGTH, 0, 0, true, true, null, -				SecureRandomHolder.getInstance());  		if (executionContext == null) {  			executionContext = new ExecutionContextImpl();  		} -		executionContext.setProcessInstanceId(this.processDefinition.getId() + "-" + pdIdLocalPart); +		if (executionContext.getProcessInstanceId() == null) { +			String pdIdLocalPart = RandomStringUtils.random(RND_ID_LENGTH, 0, 0, true, true, null, +					SecureRandomHolder.getInstance()); +			executionContext.setProcessInstanceId(this.processDefinition.getId() + "-" + pdIdLocalPart); +		} else { +			log.debug("Using process instance id from execution context."); +		} +		log.debug("Creating process instance with id '{}'.", executionContext.getProcessInstanceId());  		this.executionContext = executionContext;  		touch();  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStore.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStore.java index c86d0de3d..010f8d984 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStore.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStore.java @@ -4,9 +4,11 @@ import java.io.Serializable;  import java.util.Map;  import javax.persistence.Column; +import javax.persistence.ElementCollection;  import javax.persistence.Entity;  import javax.persistence.EnumType;  import javax.persistence.Enumerated; +import javax.persistence.FetchType;  import javax.persistence.Id;  import javax.persistence.Lob;  import javax.persistence.Table; @@ -36,6 +38,7 @@ public class ProcessInstanceStore {  	@Column(name = "executionContextData", nullable = false)  	@Lob +	@ElementCollection(fetch=FetchType.EAGER)  	private Map<String, Serializable> executionContextData;  	public String getProcessInstanceId() { | 
