08-08-2011 05:57 PM
org.activiti.engine.ActivitiException: Variables of type ByteArray cannot be used to query
org.activiti.engine.impl.QueryVariableValue.initialize(QueryVariableValue.java:46)
String uuid = UUID.randomUUID().toString();
TaskMetaData taskMetaData= new TaskMetaData(uuid);
taskMetaData.setApprovalLinkURL("http://localhost:8080/activiti-rest/pages/approve.do?taskId=");
taskMetaData.setClaimLinkURL("http://localhost:8080/activiti-rest/pages/claim.do?taskId=");
String feedDescription=
"<h1>Workflow Task</h1><br/><div id=\"workflow_link\">"
+ "</div> | "
+ "<a href=\""
+ taskMetaData.getApprovalLinkURL()
+ taskMetaData.getId()
+ "\" title=\"Approve Task\">Approve Task</a> | "
+ "<a href=\""
+ taskMetaData.getClaimLinkURL()
+ taskMetaData.getId()
+ "\" title=\"Claim Task\">Claim Task</a> | <br/> ";
taskMetaData.setDescription(feedDescription);
// set the UUID as a process variable
task.setVariable("taskId", taskMetaData);
TaskMetaData taskMetaData= new TaskMetaData(taskId);
Task task = taskService.createTaskQuery().processVariableValueEquals("taskId", taskMetaData).singleResult();
if (task == null) {
throw new ActivitiException("No such task");
}
public class TaskMetaData implements Serializable, Comparable<TaskMetaData> {
private static final long serialVersionUID = 2932507457670328496L;
private final String id;
private String approvalLinkURL;
private String claimLinkURL;
private String description;
public TaskMetaData(String id) {
super();
this.id = id;
}
public String getApprovalLinkURL() {
return approvalLinkURL;
}
public void setApprovalLinkURL(String approvalLinkURL) {
this.approvalLinkURL = approvalLinkURL;
}
public String getClaimLinkURL() {
return claimLinkURL;
}
public void setClaimLinkURL(String claimLinkURL) {
this.claimLinkURL = claimLinkURL;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getId() {
return id;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null || !getClass().equals(obj.getClass())) {
return false;
}
TaskMetaData that = (TaskMetaData) obj;
return this.id.equalsIgnoreCase(that.getId());
}
@Override
public int hashCode() {
return new HashCodeBuilder(11, 1117).append(id).toHashCode();
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this,
ToStringStyle.DEFAULT_STYLE);
}
@Override
public int compareTo(TaskMetaData compare) {
if (compare == null) {
return 0;
}
String thatId = compare.getId();
if (id != null && thatId != null) {
return id.compareTo(thatId);
} else {
return 0;
}
}
}
08-08-2011 07:05 PM
08-08-2011 07:23 PM
08-08-2011 08:52 PM
08-08-2011 09:52 PM
08-09-2011 03:05 AM
08-09-2011 05:05 AM
By serialized pojo you mean a persistent domain model, such as a Jpa entity, is that correct?
08-09-2011 09:19 AM
Not all DB's support using a BLOB as a condition in the where-clause (which kinda makes sense, potentially comparing loads of data).
A solution whould be to store the ID of your pojo as a seperate variable or create your own variable-type (search the forum on how to do this) which stores the ID and the ref to the byteArray in one variable-record.
08-09-2011 05:31 PM
08-09-2011 05:42 PM
You understood wrong, I is not possible to query bytearray variables, just like it is almost always senseless to query real blob data.
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.