1
22
23 package com.liferay.portlet.workflow.action;
24
25 import com.liferay.portal.kernel.util.Constants;
26 import com.liferay.portal.kernel.util.ParamUtil;
27 import com.liferay.portal.security.auth.PrincipalException;
28 import com.liferay.portal.struts.PortletAction;
29 import com.liferay.portlet.workflow.model.WorkflowInstance;
30 import com.liferay.portlet.workflow.service.WorkflowInstanceServiceUtil;
31 import com.liferay.util.servlet.SessionErrors;
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 config,
50 ActionRequest req, ActionResponse res)
51 throws Exception {
52
53 String cmd = ParamUtil.getString(req, Constants.CMD);
54
55 try {
56 if (cmd.equals(Constants.ADD)) {
57 addInstance(req, res);
58 }
59 else if (cmd.equals(Constants.SIGNAL)) {
60 signalInstance(req, res);
61 }
62 }
63 catch (Exception e) {
64 if (e instanceof PrincipalException) {
65 SessionErrors.add(req, e.getClass().getName());
66
67 setForward(req, "portlet.workflow.error");
68 }
69 else {
70 throw e;
71 }
72 }
73 }
74
75 protected void addInstance(ActionRequest req, ActionResponse res)
76 throws Exception {
77
78 long definitionId = ParamUtil.getLong(req, "definitionId");
79
80 WorkflowInstance instance =
81 WorkflowInstanceServiceUtil.addInstance(definitionId);
82
83 String redirect = ParamUtil.getString(req, "redirect");
84
85 redirect += "&instanceId=" + instance.getInstanceId();
86
87 sendRedirect(req, res, redirect);
88 }
89
90 protected void signalInstance(ActionRequest req, ActionResponse res)
91 throws Exception {
92
93 long instanceId = ParamUtil.getLong(req, "instanceId");
94 long tokenId = ParamUtil.getLong(req, "tokenId");
95
96 if (tokenId <= 0) {
97 WorkflowInstanceServiceUtil.signalInstance(instanceId);
98 }
99 else {
100 WorkflowInstanceServiceUtil.signalToken(instanceId, tokenId);
101 }
102
103 sendRedirect(req, res);
104 }
105
106 }