在Liferay中以编程方式执行工作流程转换? [英] Perform workflow transition programmatically in liferay?

查看:211
本文介绍了在Liferay中以编程方式执行工作流程转换?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在工作流程的最后一步,我有两个过渡,分别名为已批准"和拒绝",但是我想从我的portlet中控制工作流程的动作.

I have two transition named "approved" and "reject" at the lastest step of my workflow, but i want to controll the workflow action from my portlet.

任何人都知道如何在liferay中以编程方式执行工作流转换吗?

Anybody know How to Perform workflow transition programmatically in liferay ?

推荐答案

我当前的代码

  JournalArticle journalArticle = JournalArticleLocalServiceUtil.getArticle(id);
            getPermissionChecker().init(u.getUser(), true);

            WorkflowInstanceLink wil= WorkflowInstanceLinkLocalServiceUtil.getWorkflowInstanceLink(companyId, journalArticle.getGroupId(), JournalArticle.class.getName(), journalArticle.getId());
            WorkflowInstance workflowInstance = WorkflowInstanceManagerUtil.getWorkflowInstance(companyId, wil.getWorkflowInstanceId());
            Map<String, Serializable> workflowContext = workflowInstance.getWorkflowContext();

            List<Integer> logTypes_assign = new ArrayList<Integer>();
            logTypes_assign.add(WorkflowLog.TASK_ASSIGN);
            List<WorkflowLog> workflowLogs_assign = WorkflowLogManagerUtil.getWorkflowLogsByWorkflowInstance(companyId, wil.getWorkflowInstanceId(), logTypes_assign, QueryUtil.ALL_POS, QueryUtil.ALL_POS, WorkflowComparatorFactoryUtil.getLogCreateDateComparator(true));
            //WorkflowPermissionUtil.hasPermission(permissionChecker, groupId, className, classPK, actionId);

            if(workflowLogs_assign.size() > 0){             
                long taskId = workflowLogs_assign.get(workflowLogs_assign.size()-1).getWorkflowTaskId();
                WorkflowTask task = WorkflowTaskManagerUtil.getWorkflowTask(companyId, taskId);
                _log.info("task : "+task.getName());
                WorkflowTask nextTask = WorkflowTaskManagerUtil.assignWorkflowTaskToUser(companyId, userId, task.getWorkflowTaskId(), userId, "auto assign", task.getDueDate(), workflowContext);               
                WorkflowTaskManagerUtil.completeWorkflowTask(companyId, userId, nextTask.getWorkflowTaskId(), "next task transition name", "next task name", workflowContext);
            }

这篇关于在Liferay中以编程方式执行工作流程转换?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆