Hi!
Zur ersten Frage kann ich nichts sagen, weiß ich nicht aus dem Stand.
Zweiteres ist relativ einfach. Man muss nur eine Condition einbauen:
1 <condition>
2 <name>review-or-approve</name>
3 <script>
4 <![CDATA[
5 import com.liferay.portal.service.RoleLocalServiceUtil;
6 import com.liferay.portal.kernel.util.GetterUtil;
7 import com.liferay.portal.kernel.workflow.WorkflowConstants;
8
9 returnValue = "Review";
10 try {
11 long userid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
12 long companyid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
13 String[] roles={"Publisher","Administrator"};
14 if (RoleLocalServiceUtil.hasUserRoles(userid, companyid, roles, true)) returnValue = "Approved";
15 } catch (Exception e) {
16 e.printStackTrace();
17 }
18 ]]>
19 </script>
20 <script-language>beanshell</script-language>
21 <transitions>
22 <transition>
23 <name>Review</name>
24 <target>review</target>
25 <default>false</default>
26 </transition>
27 <transition>
28 <name>Approved</name>
29 <target>approved</target>
30 <default>false</default>
31 </transition>
32 </transitions>
33 </condition>
Wenn der Benutzer in der Rolle Publisher oder Administrator ist, geht man direkt zum State Approved. Wenn nicht, schickt man ihn durch den normalen Workflow.
Be kell jelentkezni ahhoz, hogy ez helytelenként legyen megjelölve.