Workitem Management - check already processes items

Hi Team,

I ideal scenario, we check if the same item is already there in the queue or not for different status such as “Pending, Completed, Exception”.

I am trying to make a logic to check if a particular item is already in pending or new status, then I would not add that item in queue.

Please let me know if there is already in-build solution for it?

Thank you!

Hello,

Have not seen ready solution for that yet. Would it be possible to check in target system if bot has already worked on the item?

Hi raivo, Thanks for the reply!

sure we can, however that will extra effort to put just to check if the item is already worked on. rather I would prefer to check it from my workitem for “Pending, Completed, Exception” before even putting them in workitem.

Normally in other RPA tools we have option to make a particular column of queue item as key and then check each queue item using that key if they are already in queue while adding them into the queue.

This is hard problem and I think there is no easy general solution there, but it is case by case. Why? Consider these observations:

  • system is distributed (multiple sources for work-items, multiple possibly parallel robots doing work)
  • there would be “millions” of work-items to check, if same kind of work-item is already “in the system, on some state” (brute force checks would become slower and slower)
  • of course, if you can come up with “primary unique key”, finding by that key would be kind of fast (and this would be case-by-case primary unique key; your unique key will differ my requirements unique key)
  • this should be “transactional”, so once someone has created “unique primary key” into somewhere, nobody else should be able to do that, and then also guaranteed that that original party has completeley created that key and surrounding work-item

Now some ideas for you to try to resolve it for your use-case:

  • use (local) transactional database and transactions there to manage what your insert into work-items
  • if you are using producer-consumer way of working, let your producer do that filtering (so don’t worry about putting multiple items in, but make your producer detect those “that are same” and drop all those duplicates)
  • to get “unique identity” for your work-items that do not have “visible” unique identity, you could use content based hashing to produce unique key (just remember to unify your work-item, so that same logical content would produce same concrete hash)
1 Like

got it. Thank you Jippo

Hey Mritunjay!

As @raivo and @jippo mentioned, we don’t currently have any built-in ways to check whether an item has been processed or not, leaving this responsibility to the developer.

However, this is something that can be achieved quite easily using our API.

More specifically, the “List process run work items” that allows you to search for a specific value in the payload of your work item.

So it could be something like:

{ "your_specific_value": "ABCD123" }

And via the API, this would look as follows:

curl --request GET "https://api.eu1.robocorp.dev/process-v1/workspaces/WORKSPACE_ID/processes/PROCESS_ID/work-items?includeData=true&size=100&search=ABCD123&sortBy=stateTs&sortOrder=desc" --header "Authorization: RC-WSKEY YOUR_API_KEY" 

You can then look at the state of the work item (if it exists) and act accordingly.

If I got your request wrong, feel free to correct me and maybe provide additional details so that we can assist you in devising the best way to achieve what you’re after!

2 Likes

Thanks Ben, this makes more sense to me. I think it will solve my purpose :slight_smile:

1 Like