Example usage for com.liferay.portal.workflow.kaleo.runtime ExecutionContext ExecutionContext

List of usage examples for com.liferay.portal.workflow.kaleo.runtime ExecutionContext ExecutionContext

Introduction

In this page you can find the example usage for com.liferay.portal.workflow.kaleo.runtime ExecutionContext ExecutionContext.

Prototype

public ExecutionContext(KaleoInstanceToken kaleoInstanceToken, KaleoTimerInstanceToken kaleoTimerInstanceToken,
            Map<String, Serializable> workflowContext, ServiceContext serviceContext) 

Source Link

Usage

From source file:de.hofuniversity.iisys.liferay.workflows.LoggingTaskManager.java

License:Open Source License

protected WorkflowTask assignWorkflowTask(long workflowTaskInstanceId, String assigneeClassName,
        long assigneeClassPK, String comment, Date dueDate, Map<String, Serializable> workflowContext,
        ServiceContext serviceContext) throws Exception {

    KaleoTaskInstanceToken kaleoTaskInstanceToken = kaleoTaskInstanceTokenLocalService
            .getKaleoTaskInstanceToken(workflowTaskInstanceId);

    List<KaleoTaskAssignmentInstance> previousTaskAssignmentInstances = kaleoTaskInstanceToken
            .getKaleoTaskAssignmentInstances();

    workflowContext = updateWorkflowContext(workflowContext, kaleoTaskInstanceToken);

    if (kaleoTaskInstanceToken.isCompleted()) {
        throw new WorkflowException("Cannot reassign a completed task " + workflowTaskInstanceId);
    }//from w  ww . j av  a2  s .  c  om

    if (dueDate != null) {
        kaleoTaskInstanceTokenLocalService.updateDueDate(workflowTaskInstanceId, dueDate, serviceContext);
    }

    kaleoTaskInstanceToken = kaleoTaskInstanceTokenLocalService.assignKaleoTaskInstanceToken(
            kaleoTaskInstanceToken.getKaleoTaskInstanceTokenId(), assigneeClassName, assigneeClassPK,
            workflowContext, serviceContext);

    workflowContext.put(WorkflowConstants.CONTEXT_TASK_COMMENTS, comment);

    ExecutionContext executionContext = new ExecutionContext(kaleoTaskInstanceToken.getKaleoInstanceToken(),
            kaleoTaskInstanceToken, workflowContext, serviceContext);

    KaleoTask kaleoTask = kaleoTaskInstanceToken.getKaleoTask();

    _kaleoActionExecutor.executeKaleoActions(KaleoNode.class.getName(), kaleoTask.getKaleoNodeId(),
            ExecutionType.ON_ASSIGNMENT, executionContext);

    boolean selfAssignment = false;

    if (assigneeClassName.equals(User.class.getName()) && (assigneeClassPK == serviceContext.getUserId())) {

        selfAssignment = true;
    }

    if (!selfAssignment) {
        _notificationHelper.sendKaleoNotifications(KaleoNode.class.getName(), kaleoTask.getKaleoNodeId(),
                ExecutionType.ON_ASSIGNMENT, executionContext);
    }

    kaleoLogLocalService.addTaskAssignmentKaleoLog(previousTaskAssignmentInstances, kaleoTaskInstanceToken,
            comment, workflowContext, serviceContext);

    return _kaleoWorkflowModelConverter.toWorkflowTask(kaleoTaskInstanceToken, workflowContext);
}

From source file:de.hofuniversity.iisys.liferay.workflows.LoggingWorkflowEngine.java

License:Open Source License

@Override
public ExecutionContext executeTimerWorkflowInstance(long kaleoTimerInstanceTokenId,
        ServiceContext serviceContext, Map<String, Serializable> workflowContext) throws WorkflowException {

    try {/* w  w w . j  a  v a2s .com*/
        fLogger.println("WorkflowEngine.executeTimerWorkflowInstance");
        fLogger.println("\tkaleoTimerInstanceTokenId: " + kaleoTimerInstanceTokenId);
        fLogger.println("\tserviceContext:");
        logServiceContext(serviceContext, "\t\t");
        fLogger.println("\tworkflowContext:");
        logMap(workflowContext, "\t\t");

        KaleoTimerInstanceToken kaleoTimerInstanceToken = kaleoTimerInstanceTokenLocalService
                .getKaleoTimerInstanceToken(kaleoTimerInstanceTokenId);

        KaleoInstanceToken kaleoInstanceToken = kaleoTimerInstanceToken.getKaleoInstanceToken();

        final ExecutionContext executionContext = new ExecutionContext(kaleoInstanceToken,
                kaleoTimerInstanceToken, workflowContext, serviceContext);

        KaleoTaskInstanceToken kaleoTaskInstanceToken = kaleoTimerInstanceToken.getKaleoTaskInstanceToken();

        executionContext.setKaleoTaskInstanceToken(kaleoTaskInstanceToken);

        final KaleoNode currentKaleoNode = kaleoInstanceToken.getCurrentKaleoNode();

        NodeExecutor nodeExecutor = _nodeExecutorFactory.getNodeExecutor(currentKaleoNode.getType());

        nodeExecutor.executeTimer(currentKaleoNode, executionContext);

        TransactionCommitCallbackUtil.registerCallback(new Callable<Void>() {

            @Override
            public Void call() throws Exception {
                _kaleoSignaler.signalExecute(currentKaleoNode, executionContext);

                return null;
            }

        });

        fLogger.println("\tRETURN executionContext:");
        logExecContext(executionContext, "\t\t");
        fLogger.flush();

        return executionContext;
    } catch (Exception e) {
        throw new WorkflowException(e);
    }
}