use of org.kie.api.task.model.Content in project jbpm by kiegroup.
the class TaskContentServiceImpl method loadContentData.
@SuppressWarnings("unchecked")
protected Map<String, Object> loadContentData(Long contentId, Task task) {
if (contentId != null) {
Map<String, Object> data = null;
Content contentById = getContentById(contentId);
if (contentById != null) {
ContentMarshallerContext mContext = getMarshallerContext(task);
Object unmarshalledObject = ContentMarshallerHelper.unmarshall(contentById.getContent(), mContext.getEnvironment(), mContext.getClassloader());
if (!(unmarshalledObject instanceof Map)) {
data = new HashMap<String, Object>();
data.put("Content", unmarshalledObject);
} else {
data = (Map<String, Object>) unmarshalledObject;
}
return data;
}
}
return null;
}
use of org.kie.api.task.model.Content in project jbpm by kiegroup.
the class TaskContentServiceImpl method deleteDocumentContent.
public void deleteDocumentContent(long taskId, long contentId) {
Task task = persistenceContext.findTask(taskId);
((InternalTaskData) task.getTaskData()).setDocumentContentId(-1);
Content content = persistenceContext.findContent(contentId);
persistenceContext.removeContent(content);
}
use of org.kie.api.task.model.Content in project jbpm by kiegroup.
the class TaskContentServiceImpl method getAllContentByTaskId.
public List<Content> getAllContentByTaskId(long taskId) {
Task task = persistenceContext.findTask(taskId);
long inputContentId = task.getTaskData().getDocumentContentId();
long outputContentId = task.getTaskData().getOutputContentId();
long faultContentId = task.getTaskData().getFaultContentId();
List<Content> allContent = new ArrayList<Content>();
allContent.add(persistenceContext.findContent(inputContentId));
allContent.add(persistenceContext.findContent(outputContentId));
allContent.add(persistenceContext.findContent(faultContentId));
return allContent;
}
use of org.kie.api.task.model.Content in project jbpm by kiegroup.
the class ExecuteDeadlinesCommand method execute.
@SuppressWarnings("unchecked")
@Override
public Void execute(Context context) {
TaskContext ctx = (TaskContext) context;
UserInfo userInfo = (UserInfo) context.get(EnvironmentName.TASK_USER_INFO);
TaskPersistenceContext persistenceContext = ctx.getPersistenceContext();
try {
Task task = persistenceContext.findTask(taskId);
Deadline deadline = persistenceContext.findDeadline(deadlineId);
if (task == null || deadline == null) {
return null;
}
TaskData taskData = task.getTaskData();
if (taskData != null) {
// check if task is still in valid status
if (type.isValidStatus(taskData.getStatus())) {
Map<String, Object> variables = null;
Content content = persistenceContext.findContent(taskData.getDocumentContentId());
if (content != null) {
ContentMarshallerContext mContext = ctx.getTaskContentService().getMarshallerContext(task);
Object objectFromBytes = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader());
if (objectFromBytes instanceof Map) {
variables = (Map<String, Object>) objectFromBytes;
} else {
variables = new HashMap<String, Object>();
variables.put("content", objectFromBytes);
}
} else {
variables = Collections.emptyMap();
}
if (deadline == null || deadline.getEscalations() == null) {
return null;
}
TaskEventSupport taskEventSupport = ctx.getTaskEventSupport();
for (Escalation escalation : deadline.getEscalations()) {
// run reassignment first to allow notification to be send to new potential owners
if (!escalation.getReassignments().isEmpty()) {
taskEventSupport.fireBeforeTaskReassigned(task, ctx);
// get first and ignore the rest.
Reassignment reassignment = escalation.getReassignments().get(0);
logger.debug("Reassigning to {}", reassignment.getPotentialOwners());
((InternalTaskData) task.getTaskData()).setStatus(Status.Ready);
List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>(reassignment.getPotentialOwners());
((InternalPeopleAssignments) task.getPeopleAssignments()).setPotentialOwners(potentialOwners);
((InternalTaskData) task.getTaskData()).setActualOwner(null);
// use assignment service to directly assign actual owner if enabled
AssignmentService assignmentService = AssignmentServiceProvider.get();
if (assignmentService.isEnabled()) {
assignmentService.assignTask(task, ctx);
}
taskEventSupport.fireAfterTaskReassigned(task, ctx);
}
for (Notification notification : escalation.getNotifications()) {
if (notification.getNotificationType() == NotificationType.Email) {
taskEventSupport.fireBeforeTaskNotified(task, ctx);
logger.debug("Sending an Email");
NotificationListenerManager.get().broadcast(new NotificationEvent(notification, task, variables), userInfo);
taskEventSupport.fireAfterTaskNotified(task, ctx);
}
}
}
}
}
deadline.setEscalated(true);
persistenceContext.updateDeadline(deadline);
persistenceContext.updateTask(task);
} catch (Exception e) {
logger.error("Error when executing deadlines", e);
}
return null;
}
use of org.kie.api.task.model.Content in project jbpm by kiegroup.
the class ExecuteReminderCommand method getVariables.
@SuppressWarnings("unchecked")
private Map<String, Object> getVariables(TaskContext ctx, TaskPersistenceContext persistenceContext, Task task, TaskData taskData) {
Map<String, Object> variables;
Content content = persistenceContext.findContent(taskData.getDocumentContentId());
if (content != null) {
ContentMarshallerContext mContext = ctx.getTaskContentService().getMarshallerContext(task);
Object objectFromBytes = ContentMarshallerHelper.unmarshall(content.getContent(), mContext.getEnvironment(), mContext.getClassloader());
if (objectFromBytes instanceof Map) {
variables = (Map<String, Object>) objectFromBytes;
} else {
variables = new HashMap<String, Object>();
variables.put("content", objectFromBytes);
}
} else {
variables = Collections.emptyMap();
}
return variables;
}
Aggregations