Nikolaj Posted September 4, 2019 Posted September 4, 2019 Hello support, can you please help me i get this error: Xmlmc method invocation failed for BPM invocation node 's1/task-88ad8e69': 0200 task taskCreate2 The specified user 'SYS_BPM_MANAGER' does not exist thanks Nikolaj
Steve Giller Posted September 4, 2019 Posted September 4, 2019 It would be worth putting a Get Request Details node just before the node that is experiencing the error as a first step. If that doesn't help, can you come back with some more details, for example what are you attempting to do when the error occurs, etc.
James Ainsworth Posted September 4, 2019 Posted September 4, 2019 Hi Nikolaj, I'm not sure what the issue is, but as a possible workaround you may want to look at the BPM workflow where the error is happening and look at the nodes that create Human Tasks. If the Owner field is left blank, it makes the SYS_BPM_MANAGER the owner. Try adding a user as the owner. You could add a team leader or manager as the owner. This has an added advantage that the Owner can view these activities in their Activity Calendar and they can also re-assign the tasks they own to other users. If you have requests that have a red or broken BPM, it is possible to also fix these. Have a look at this post if this is the case I hope this helps. Regards, James
Nikolaj Posted September 10, 2019 Author Posted September 10, 2019 Hi @James Ainsworth Yes the Owner field is empty but this was no problem so far. Could it be a Problem that the assignee is added later not in the progressive capture? here are more details.. Thanks Nikolaj
Steve Giller Posted September 10, 2019 Posted September 10, 2019 If you put a Suspend -> Wait for Owner node followed by a Get Request Details node between the Change Approved and Create Asset and Link Baseline nodes this should prevent your issue from recurring.
Nikolaj Posted September 10, 2019 Author Posted September 10, 2019 @Steve Giller Thanks now it is working for all my users. A bit strange because for me and some other colleagues it was working fine. but for some others not when they initiate the process. As you can see now i have it two times. one in the beginning because i had it before and this is how i do it normal. and one you told me after change approved and before Human Task. (nodes waiting for change owner and get request details). But if it works then it is fine by me. Thanks Nikolaj
Victor Posted September 10, 2019 Posted September 10, 2019 @Nikolaj the error you reported is typical for when the task is configured be assigned to a user via a flowcode variable usually the request owner. If when the task is created the flowcode variable for owner does not have a value it will be replaced with SYS_BPM_MANAGER value but a user with this ID does not exist hence the error. One would need to ensure the variable has a value when used for assignment of a task and mind you this does not necessarily mean the request having an owner at the time the task is created... is all to do with the values for flowcode variables ... if the values for the variables get populated when the request did not have an owner and not refreshed afterwards (e.g. after the request gets an owner) then there won’t be a value for the variable when the task is created and the error will occur...
Nikolaj Posted September 11, 2019 Author Posted September 11, 2019 @Victor thanks for your explanation. make sense. I changed it now to... (Change Request assignee before i had the "flowcode"ownerID"). and put the 2 nodes before who Steve told me. Hope it will not happen again. best regards Nikolaj
Victor Posted September 11, 2019 Posted September 11, 2019 @Nikolaj just wanted to make sure that you do indeed need to assign it to a role instead of the owner ... having the task configured to assign to a role might mean that the task is not necessarily assigned to the request owner... if you do need the task assigned to the request owner then I would say have it configured to the owner ID flowcode variable... I'll expand on my above explanation in case someone else (or even you) are interested in this in more detail, it is not something very easily understood without explanation .... this is something I also explained recently to our partner in the US... so: When using "Get Request Details" node, this will create a set of request variables (such as owner, team, request type, and may others) which will be available throughout the process. The purpose of this is to provide the ability to design the business process using dynamic values rather than static hard coded values. The set of request variables that gets created by the node represents a snapshot of the request as it existed at the time the node was reached and they are not automatically refreshed (!). This is very important. So all the variables for request data will have a set of values based on the request data available at a point in time. For example, let's say you have this configuration: When the process starts it will have a "Get Request Details" node which means a set of flowcode variables get values. At the time the node runs, let's say the request does not have an owner as such the value for Owner ID will be empty. The process continues doing various stuff then it gets suspended waiting for a request owner. The request is assigned, the process resumes and attempts to create a human task and assign it to the request owner and it fails. Now, one would wonder why since the request has an owner. The reason is that the value for the Owner ID variable is still empty as it was created in the beginning, when the request did not have an owner. Because the values for the variables holding request data do not automatically refresh when any of this data is changed it means that our variable still has no value regardless of what happened on the request between "Get Request Details" node and the human task. How do we cater for this? We can do the following configuration: What we did there is to add another "Get Request Details" right before the Human Task to refresh the values for the variables holding request data. When the second "Get Request Details" node runs, because the request now has an owner (following the suspend wait for owner), it means that the Owner ID variable now does have a value and the Human Task will be created successfully. I will expand on this example to show a bit more complex scenario to stress the importance of refreshing the values for these variables at key points in the process and how to do this a bit more efficiently. We can have the following configuration: We now have two Human Tasks, one created after the request is suspended for an owner and another after the request is suspended for prioritisation. For the first task we have a "Get Request Details" right before creating the task to refresh the variables for the reasons detailed above. For the second task however we do not have such a node because we already have refreshed values with Owner ID having a value. However because we have another suspend point (wait for Request Priority) it means that while the process is suspended anything can happen to request data. It does wait for a request priority but during this suspension the request can also be assigned to a different user or even a different team. A user can for example re-assign the request then prioritise it, the process will resume only after prioritisation. Because we do not refresh the variable value before creating the second task it means the second task will be assigned to the previous owner which might not make sense. An obvious solution will be adding a "Get Request Details" before the second human task. However this creates another potential dangerous scenario: let's assume that while waiting for Request Priority, a user re-assigns the request to a team but no owner. The "Get Request Details" before the second Human Task will refresh the variable values meaning that now, Owner ID will be (again) empty which means the task will fail to create. A solution would be to actually check the variable values, before creating a human task especially the ones we use in a human task to make sure they have values and/or they have the correct values. Like this: The decision node there will branch the process into another Wait For Request Owner in case the Owner ID variable is empty. It will join back the main flow once an owner is assigned (obviously followed by a variable value refresh) which will create the task. It is possible that one simple adds a "Wait For Request Owner" followed by "Get Request Details". The reason for the decision is to deviate the process only if a request does not have an owner which means the additional nodes added asa fail safe will only run in a specific scenario rather than all the time. It simply makes the process run more smoothly more efficient and less resource intensive. My advice would be to always use a decision node to check for values rather than simply put a "Get Request Details" because on many occasions it is not actually necessary and is an overkill that usually makes the process unnecessarily more sluggish. Happy to cover this in more depth if necessary and offer other examples if needed. 1
Nikolaj Posted September 11, 2019 Author Posted September 11, 2019 Hi @Victor thanks for that detailed explanation. I learned a lot new things now about BP and Human Tasks. Best regards Nikolaj
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now