1
22
23 package com.liferay.portlet.workflow.action;
24
25 import com.liferay.portal.kernel.servlet.SessionErrors;
26 import com.liferay.portal.kernel.util.Constants;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.security.auth.PrincipalException;
29 import com.liferay.portal.struts.PortletAction;
30 import com.liferay.portlet.workflow.model.WorkflowInstance;
31 import com.liferay.portlet.workflow.service.WorkflowInstanceServiceUtil;
32
33 import javax.portlet.ActionRequest;
34 import javax.portlet.ActionResponse;
35 import javax.portlet.PortletConfig;
36
37 import org.apache.struts.action.ActionForm;
38 import org.apache.struts.action.ActionMapping;
39
40
46 public class EditInstanceAction extends PortletAction {
47
48 public void processAction(
49 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
50 ActionRequest actionRequest, ActionResponse actionResponse)
51 throws Exception {
52
53 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
54
55 try {
56 if (cmd.equals(Constants.ADD)) {
57 addInstance(actionRequest, actionResponse);
58 }
59 else if (cmd.equals(Constants.SIGNAL)) {
60 signalInstance(actionRequest, actionResponse);
61 }
62 }
63 catch (Exception e) {
64 if (e instanceof PrincipalException) {
65 SessionErrors.add(actionRequest, e.getClass().getName());
66
67 setForward(actionRequest, "portlet.workflow.error");
68 }
69 else {
70 throw e;
71 }
72 }
73 }
74
75 protected void addInstance(
76 ActionRequest actionRequest, ActionResponse actionResponse)
77 throws Exception {
78
79 long definitionId = ParamUtil.getLong(actionRequest, "definitionId");
80
81 WorkflowInstance instance =
82 WorkflowInstanceServiceUtil.addInstance(definitionId);
83
84 String redirect = ParamUtil.getString(actionRequest, "redirect");
85
86 redirect += "&instanceId=" + instance.getInstanceId();
87
88 sendRedirect(actionRequest, actionResponse, redirect);
89 }
90
91 protected void signalInstance(
92 ActionRequest actionRequest, ActionResponse actionResponse)
93 throws Exception {
94
95 long instanceId = ParamUtil.getLong(actionRequest, "instanceId");
96 long tokenId = ParamUtil.getLong(actionRequest, "tokenId");
97
98 if (tokenId <= 0) {
99 WorkflowInstanceServiceUtil.signalInstance(instanceId);
100 }
101 else {
102 WorkflowInstanceServiceUtil.signalToken(instanceId, tokenId);
103 }
104
105 sendRedirect(actionRequest, actionResponse);
106 }
107
108 }