Forums

Home » Liferay Portal » English » 3. Development

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Luca Lupo
Kaleo Single Approver Workflow: direct publish
October 25, 2012 3:52 AM
Answer

Luca Lupo

Rank: Regular Member

Posts: 106

Join Date: October 1, 2012

Recent Posts

Is it possible to say to Kaleo to Publish directly if the web content is created by a specific role?

I mean, the Admin right now can create content (that will be in status pending) and then he can approve the content. What I want is to have two roles:

1. Publisher (users who can create contents but not to approve them). So when a user creates a content it will be in pending status;
2. Approver (users who can approve the contents). They approve the contents, but in the case they create contents, such contents are automatically published as approved.

Any hint?
Christoph Rabel
RE: Kaleo Single Approver Workflow: direct publish
October 25, 2012 4:16 AM
Answer

Christoph Rabel

Rank: Regular Member

Posts: 157

Join Date: September 24, 2009

Recent Posts

Yes.
Change Single Approver Workflow and add a condition:

 1
 2        <state>
 3                <name>created</name>
 4                <initial>true</initial>
 5                <transitions>
 6                        <transition>
 7                                <name>Determine Review</name>
 8                                <target>review-or-approve</target>
 9                                <default>true</default>
10                        </transition>
11                </transitions>
12        </state>
13
14        <condition>
15                <name>review-or-approve</name>
16                <script> <![CDATA[
17                                import com.liferay.portal.service.RoleLocalServiceUtil;
18                                import com.liferay.portal.kernel.util.GetterUtil;
19                                import com.liferay.portal.kernel.workflow.WorkflowConstants;
20
21                                try {
22                                        returnValue = "Review";
23                                        long userid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
24                                        long companyid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
25                                        String[] roles={"Approver","Administrator"};
26                                        if (RoleLocalServiceUtil.hasUserRoles(userid, companyid, roles, true)) returnValue = "Approved";
27                                } catch (Exception e) {
28                                  e.printStackTrace();
29                                }
30                        ]]> </script>
31                <script-language>beanshell</script-language>
32                <transitions>
33                        <transition>
34                                <name>Review</name>
35                                <target>review</target>
36                                <default>false</default>
37                        </transition>
38                        <transition>
39                                <name>Approved</name>
40                                <target>approved</target>
41                                <default>false</default>
42                        </transition>
43                </transitions>
44        </condition>
Luca Lupo
RE: Kaleo Single Approver Workflow: direct publish
October 25, 2012 6:06 AM
Answer

Luca Lupo

Rank: Regular Member

Posts: 106

Join Date: October 1, 2012

Recent Posts

Is it enough to change the xml inside the kaleo-web present in webapp folder of tomcat?

If so, I have this...but it seems that nothing happens emoticon

  1
  2
  3<?xml version="1.0"?>
  4
  5
  6<workflow-definition
  7    xmlns="urn:liferay.com:liferay-workflow_6.1.0"
  8    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9    xsi:schemaLocation="urn:liferay.com:liferay-workflow_6.1.0 http://www.liferay.com/dtd/liferay-workflow-definition_6_1_0.xsd"
 10>
 11    <name>Single Approver</name>
 12    <description>A single approver can approve a workflow content.</description>
 13    <version>1</version>
 14
 15     <state>
 16            <name>created</name>
 17            <initial>true</initial>
 18            <transitions>
 19                <transition>
 20                    <name>Determine Review</name>
 21                    <target>review-or-approve</target>
 22                    <default>true</default>
 23                </transition>
 24            </transitions>
 25    </state>
 26    <condition>
 27        <name>review-or-approve</name>
 28        <script> <![CDATA[
 29                        import com.liferay.portal.service.RoleLocalServiceUtil;
 30                        import com.liferay.portal.kernel.util.GetterUtil;
 31                        import com.liferay.portal.kernel.workflow.WorkflowConstants;
 32
 33                        try {
 34                                returnValue = "Review";
 35                                long userid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
 36                                long companyid = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
 37                                String[] roles={"Approver","Administrator"};
 38                                if (RoleLocalServiceUtil.hasUserRoles(userid, companyid, roles, true)) returnValue = "Approved";
 39                        } catch (Exception e) {
 40                          e.printStackTrace();
 41                        }
 42                ]]> </script>
 43        <script-language>beanshell</script-language>
 44        <transitions>
 45                <transition>
 46                        <name>Review</name>
 47                        <target>review</target>
 48                        <default>false</default>
 49                </transition>
 50                <transition>
 51                        <name>Approved</name>
 52                        <target>approved</target>
 53                        <default>false</default>
 54                </transition>
 55        </transitions>
 56    </condition>
 57    <task>
 58        <name>update</name>
 59        <metadata>
 60            <![CDATA[{"transitions":{"resubmit":{"bendpoints":[[303,140]]}},"xy":[328,199]}]]>
 61        </metadata>
 62        <actions>
 63            <action>
 64                <name>reject</name>
 65                <script>
 66                    <![CDATA[
 67                        Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("denied"), workflowContext);
 68                        Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("pending"), workflowContext);
 69                    ]]>
 70                </script>
 71                <script-language>javascript</script-language>
 72                <execution-type>onAssignment</execution-type>
 73            </action>
 74            <notification>
 75                <name>Creator Modification Notification</name>
 76                <template>Your submission was rejected by a reviewer, please modify and resubmit.</template>
 77                <template-language>text</template-language>
 78                <notification-type>email</notification-type>
 79                <execution-type>onAssignment</execution-type>
 80            </notification>
 81        </actions>
 82        <assignments>
 83            <user />
 84        </assignments>
 85        <transitions>
 86            <transition>
 87                <name>resubmit</name>
 88                <target>review</target>
 89            </transition>
 90        </transitions>
 91    </task>
 92    <task>
 93        <name>review</name>
 94        <metadata>
 95            <![CDATA[{"xy":[168,36]}]]>
 96        </metadata>
 97        <actions>
 98            <notification>
 99                <name>Review Notification</name>
100                <template>You have a new submission waiting for your review in the workflow.</template>
101                <template-language>text</template-language>
102                <notification-type>email</notification-type>
103                <execution-type>onAssignment</execution-type>
104            </notification>
105            <notification>
106                <name>Review Completion Notification</name>
107                <template>
108                    Your submission has been reviewed and the reviewer has applied the following ${taskComments}.</template>
109                <template-language>freemarker</template-language>
110                <notification-type>email</notification-type>
111                <recipients>
112                    <user />
113                </recipients>
114                <execution-type>onExit</execution-type>
115            </notification>
116        </actions>
117        <assignments>
118            <roles>
119                <role>
120                    <role-type>organization</role-type>
121                    <name>Organization Administrator</name>
122                </role>
123                <role>
124                    <role-type>organization</role-type>
125                    <name>Organization Content Reviewer</name>
126                </role>
127                <role>
128                    <role-type>organization</role-type>
129                    <name>Organization Owner</name>
130                </role>
131                <role>
132                    <role-type>regular</role-type>
133                    <name>Administrator</name>
134                </role>
135                <role>
136                    <role-type>regular</role-type>
137                    <name>Portal Content Reviewer</name>
138                </role>
139                <role>
140                    <role-type>site</role-type>
141                    <name>Site Administrator</name>
142                </role>
143                <role>
144                    <role-type>site</role-type>
145                    <name>Site Content Reviewer</name>
146                </role>
147                <role>
148                    <role-type>site</role-type>
149                    <name>Site Owner</name>
150                </role>
151            </roles>
152        </assignments>
153        <transitions>
154            <transition>
155                <name>approve</name>
156                <target>approved</target>
157            </transition>
158            <transition>
159                <name>reject</name>
160                <target>update</target>
161                <default>false</default>
162            </transition>
163        </transitions>
164    </task>
165    <state>
166        <name>approved</name>
167        <metadata>
168            <![CDATA[
169                {"xy":[380,51]}
170            ]]>
171        </metadata>
172        <actions>
173            <action>
174                <name>approve</name>
175                <script>
176                    <![CDATA[
177                        Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("approved"), workflowContext);
178                    ]]>
179                </script>
180                <script-language>javascript</script-language>
181                <execution-type>onEntry</execution-type>
182            </action>
183        </actions>
184    </state>
185</workflow-definition>
Luca Lupo
RE: Kaleo Single Approver Workflow: direct publish
October 25, 2012 1:06 PM
Answer

Luca Lupo

Rank: Regular Member

Posts: 106

Join Date: October 1, 2012

Recent Posts

Thanks, that worked emoticon

Now I'm trying to understand the sending email. I know that Kaleo sends emails when a new content is created, when the content is assigned to someone, and when it is rejected or approved. And I suppose that when the content is assigned to someone, the email arrives to this "someone", but in the other two cases I dunno who will be the receiver.
Vika Tory
RE: Kaleo Single Approver Workflow: direct publish
October 30, 2012 2:39 AM
Answer

Vika Tory

Rank: New Member

Posts: 1

Join Date: October 30, 2012

Recent Posts

Hi,

I need to have role (Administrator) which can create contents and these contents are automatically published as approved.
I've tried to use xml that Christoph gave but it still does't work for me. Does anybody know what can be the problem?

Thanks emoticon
Harish Kumar
RE: Kaleo Single Approver Workflow: direct publish
October 30, 2012 3:11 AM
Answer

Harish Kumar

Rank: Expert

Posts: 398

Join Date: July 31, 2010

Recent Posts

Content creator will get the mail in case of approval/rejection.
Lukas Kornprobst
RE: Kaleo Single Approver Workflow: direct publish
February 5, 2013 9:50 AM
Answer

Lukas Kornprobst

Rank: New Member

Posts: 1

Join Date: April 12, 2012

Recent Posts

Hi,

What is the type of your role? (Site Role, Regular Role, etc.)

Christpoh Condition script is an verry good approach (thx for that emoticon ), but it worked for me only with "Regular Roles", not with "Site Roles" (Liferay v6.1).
So i changed the script in the condition tag with the following:

 1
 2            <script><![CDATA[import com.liferay.portal.kernel.util.GetterUtil;
 3import com.liferay.portal.kernel.workflow.WorkflowConstants;
 4import com.liferay.portal.service.UserGroupRoleLocalServiceUtil;
 5import com.liferay.portal.service.GroupLocalServiceUtil;
 6import com.liferay.portal.service.UserLocalServiceUtil;
 7
 8
 9try {
10    returnValue = "review";
11    long userId = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
12    long groupId = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_GROUP_ID));
13    String role = "Approver";
14   
15    if (UserGroupRoleLocalServiceUtil.hasUserGroupRole(userId, groupId, role, true)) returnValue = "approved";
16} catch (Exception e) {
17    e.printStackTrace();
18}
19]]></script>

After the change, everything went without any problems with Site Roles for me.
The variable "role" must be changed with your "Site Role" (Administrator).
Jacques Traore
RE: Kaleo Single Approver Workflow: direct publish
April 3, 2013 6:01 AM
Answer

Jacques Traore

Rank: Junior Member

Posts: 46

Join Date: January 21, 2013

Recent Posts

Luca Lupo:
Thanks, that worked emoticon

Now I'm trying to understand the sending email. I know that Kaleo sends emails when a new content is created, when the content is assigned to someone, and when it is rejected or approved. And I suppose that when the content is assigned to someone, the email arrives to this "someone", but in the other two cases I dunno who will be the receiver.



Hi Lucas,
Was it (finally) enough for you changing directly ..\tomcat-7.0.27\webapps\kaleo-web\WEB-INF\classes\META-INF\definitions\single-approver-definition.xml ?
Because I did the same and it doesn't seem to work.

Thanks by advance.