Honestly never tried it, but have you considered using the "iseditable" function?
Check for available project
I have a workflow that includes automatically updating a large number of tasks within a project. This workflow can be triggered multiple times in short order.
I am getting a large number of "This project is currently running an update process as set by another user, please try to perform this operation again shortly." errors.
How do I confirm a project is open for editing before I send the API request?
Please sign in to leave a comment.
What updates are you making?
Perhaps you can try to perform them in a scheduled workflow rule?
Hope this helps,
The overall work flow is:
1. An external process creates parent tasks in a project.
2. Task is activated once everything is in place.
3. A clarizen workflow rule sends an outbound call (plus other activities) when a task created in step 1 is activated.
4. Outbound call triggers a process that evaluates the documents related to the task and creates three sub tasks for each parent task created in step 1.
5. The sub tasks are available for personnel to claim through a different mechanism.
This works well for 1 or two parent tasks for step 1 but I occasionally have 30+ tasks created in one go. This results in 30+ concurrent external scripts all trying to update the same project at the same time. The update/insert queries can take 10-15 seconds each and Clarizen locks the project against editing while an insertion is applied. This causes other instances of my script to error out randomly. The actual number is highly variable and I suspect is based upon Clarizen server loads (beyond my control).
I solved the problem by implementing a universal Queue. Anytime my external system wants to change data in Clarizen it now loads the request into a database and a separate script runs them one at a time in the order they arrived at the database. This solved the problem but slowed down the update process.
I am now more curious to know if Clarizen has a built in mechanism to check for project locking when using the API.
Guy, the isEditable function will not help since I am using API calls.