public void execute(ActivityExecution execution) throws Exception { TaskEntity task = TaskEntity.createAndInsert(execution); task.setExecution(execution); task.setTaskDefinition(taskDefinition); if (taskDefinition.getNameExpression() != null) { String name = (String) taskDefinition.getNameExpression().getValue(execution); task.setName(name); } if (taskDefinition.getDescriptionExpression() != null) { String description = (String) taskDefinition.getDescriptionExpression().getValue(execution); task.setDescription(description); } if (taskDefinition.getDueDateExpression() != null) { Object dueDate = taskDefinition.getDueDateExpression().getValue(execution); if (dueDate != null) { if (!(dueDate instanceof Date)) { throw new ActivitiException( "Due date expression does not resolve to a Date: " + taskDefinition.getDueDateExpression().getExpressionText()); } task.setDueDate((Date) dueDate); } } if (taskDefinition.getPriorityExpression() != null) { final Object priority = taskDefinition.getPriorityExpression().getValue(execution); if (priority != null) { if (priority instanceof String) { try { task.setPriority(Integer.valueOf((String) priority)); } catch (NumberFormatException e) { throw new ActivitiException("Priority does not resolve to a number: " + priority, e); } } else if (priority instanceof Number) { task.setPriority(((Number) priority).intValue()); } else { throw new ActivitiException( "Priority expression does not resolve to a number: " + taskDefinition.getPriorityExpression().getExpressionText()); } } } handleAssignments(task, execution); // All properties set, now firing 'create' event task.fireEvent(TaskListener.EVENTNAME_CREATE); }