The Oracle BPM Worklist app is a part of the Oracle SOA Suite. Working with the Worklist app is very annoying, because the default timeout is very short (seconds!). So after getting a cup of coffee or reading a mail you have to login again.
Solving this problem seems quite easy by increasing the session timeout in your (generated) ADF human task or in the worklist app in the weblogic console, but it all doesn’t work.
The solution for this annoying issue is quite easy, once you know where and how. Here is the trick.
First we need to create a deployment plan for the worklistapp. When you already have one, you can skip step 1 to 5 and continue with step 6.
1. Navigate in the Weblogic console to “Deployments” (in the menu on the left) and search in the list for “worklistapp”.
2. Expand the worklistapp [+] and under Modules click on Web Application “/integration/worklistapp”.
3. Go to the “Configuration” tab (subtab “General”).
4. Change the value of the “Session Timeout (in seconds)” to something else (it must be a different value).
5. Save and follow the weblogic directions to create a deployment plan (plan.xml).
6. Locate you deployment plan by going the “Deployments” page and search again for “worklistapp”.
7. Instead of expanding, click on the “worklistapp”.
8. You can see the location of your deployment plan under tab “Overview” after property “Path”.
9. Go to this location on the machine (server) where the BPM Worklist (SOA Suite) is installed.
10. Make a copy of the plan (e.g. Plan2.xml), leaving the original one as ‘backup’.
11. Edit the new deployment Plan2.xml file.
12. Search in the beginning of the file for the setting with the name SessionDescriptor_timeoutSecs_xxxxxxxxxxxxxx where x is a digit
Edit the value for the timeout you desire. The timeout value you define proves to be in minutes (not seconds, despite of the name)!
e.g. in my case, I’ve set the timeout to 45 minutes:
<variable> <name>SessionDescriptor_timeoutSecs_13064193293970</name> <value>45</value> </variable>
13. Search for the node “module-override” of the “worklist.war” module (xpath: /deployment-plan/module-override/module-name).
14. In this “module-override” node, there is a child node “module-descriptor” that contains child node “root-element” with value “web-app”, probably the last child node of node “module-override”).
Note: Don’t confuse it with node “module-descriptor” with “root-element” node “weblogic-web-app”.
15. When you’ve found the correct “module-descriptor” node, add the following child nodes after child node “uri”, which should have value “WEB_INF/web.xml”, and replace the xxxxxxxxxxxxxx with the same digits you have found in step 12:
<variable-assignment> <name>SessionDescriptor_timeoutSecs_xxxxxxxxxxxxxx</name> <xpath>/web-app/session-config/session-timeout</xpath> <operation>replace</operation> </variable-assignment>
e.g in my case:
<module-descriptor external="false"> <root-element>web-app</root-element> <uri>WEB-INF/web.xml</uri> <variable-assignment> <name>SessionDescriptor_timeoutSecs_13064193293970</name> <xpath>/web-app/session-config/session-timeout</xpath> <operation>replace</operation> </variable-assignment> </module-descriptor>
16. Save the file.
17. Go back to the Weblogic console and again go to the “Deployments” page.
18. Select “worklistapp” [v]
18. Stop the “worklistapp” with the Stop button.
19. Select “worklistapp” [v]again.
20. With the “Update” button use your new deployment plan (e.g. Plan2.xml)
Note: When there are problems (errors) with updating other applications as well, stop the other applications and restart them after the update of the “worklistapp”.
21. Start the “worklistapp”.
You can check if it works bij checking the session timeout of a session.
22. First login into the BPM Worklist to create a session.
23. In the Weblogic admin console, go to the “Deployments” page and search for the “worlistapp” again.
24. Expand the “worklistapp” [+] and under Modules click on Web Application “/integration/worklistapp”.
25 Click on tab “Monitoring” and select subtab “Sessions”.
26. If you’ve done it correctly, the “Max Inactive Interval” is set to your value multiplied by 60 (minutes to seconds).
e.g. in my case, it’s 2700 (45 * 60).
And from now on a less annoying life has began! 🙂