Hi Robert,
Thanks for the response. Please find my comments below:
- Environment locks will only work during the session runs as you correctly mentioned.
- "Get Item by ID" can be used as a work-around, but then it has a few limitations:
- We have to lock the item every time we need to access the data (even for reading purpose)
- The Queue has to be shared across BOTs and processes/ We have to create a separate queue for specially this purpose.
- The overheads will be there as correctly mentioned by you (The same are there in current situation of storing it out of BP)
Actually, It is more about the feature of having sharing variables across sessions and BOTs even after the session has been stopped.
The scenario mentioned earlier was more or less about setting a flag, but the same can be easily extended to reading and storing other type of data Items according to scenarios, just a few as I can thought of:
- Text: Storing the name of the VDI/BOT which has run a process once, so that the same present in the list will not run it again.
- Date: Last date of run/update and taking decision according to that and updating the same after latest run.
We can also think it as a output of one BOT which will become input to other BOTs running in sequential manner or in concurrent manner with the proper usage of environment locking.
I agree to the point that if we have a "shared variable" then there could be challenges in troubleshooting if proper coding standards are not followed as per its functionality.
But that is applicable to any type of "shared data".
Consider the current situation where in case we want to store some data that should accessible across sessions or can become output of another process, we have to store it on the shared drive in an excel, notepad, SharePoint etc. There also we have to apply proper environment locking before making updates.
We have to apply the same concept while making updates to the "shared variable", but the advantage here will be that the data will be stored in Blue Prism only, which can be accessed directly by BOTs without the overhead/failure/latency of using a shared drive and other applications like excel, notepad.
More importantly we have to have a feature to delete such kind of variable/empty memory explicitly through BP action in process or by controller once we know that it is no longer needed to make sure BP database optimization.
Hope this would be helpful.
I had submitted the idea regarding the same too:
https://community.blueprism.com//viewidea/?IdeationKey=c1f9b554-73c0-4091-a18e-fe0b2c28afad
------------------------------
Manish Rawat
Project Manager
Mercer
New Delhi
------------------------------
Original Message:
Sent: 12-29-2020 10:22
From: Robert Nicklin
Subject: Data Item to store and update variables across sessions
Hi Manish,
Your thread makes for an interesting read, thanks for posting it! A few things from me:
- I did wonder whether Environment Locks could in some way help resolve your issue, as other resources can actively query whether a lock exists. In your example, BOT1 could obtain an environment lock called "SYSTEM X LOGGED IN" after which other robots (such as BOT2) would find that lock is already held by another process when they query it, implying that the target system was already logged in by another process. This is quite a limited feedback function and is far from ideal for a few reasons (i.e. the lock would be released when the session running on BOT1 ended / if the session running on BOT1 terminated the lock would be orphaned) but it hadn't been mentioned above so I thought it may be worth throwing into the mix.
- From Blue Prism 6.7 onwards there is now an action in the Work Queues VBO called "Get Item by ID" - this allows a process or object to get a work item from a queue by specifying an ID vs. using tag filters along with the "Get Next Item" action. I wonder if this may mitigate some of the performance concerns that you have when working in a multiple robot scenario as in the second option listed above? I imagine there would still be a delay as BOT1 gets the item, signs into the system and posts an update to the item's data, but I imagine some sort of delay may already exist when writing this information into a file into a shared location anyway?
Finally I had a question for you about this as a potential feature.
Imagining a world where this new feature/capability existed, could this not introduce complexity in troubleshooting if the behaviour of a given process is altered by other processes that may be running simultaneously? If several robots can alter a "shared variable" at any time couldn't it become quite difficult to track down which robot had set a shared value incorrectly and why? Obviously a good audit would help mitigate this, but I wondered if you had any thoughts on what impact this could have on troubleshooting in general.
Hope the additional information helps!
Regards,
Rob
------------------------------
Robert Nicklin
Senior Product Owner
Blue Prism
Warrington, England
Original Message:
Sent: 12-21-2020 09:09
From: Manish Rawat
Subject: Data Item to store and update variables across sessions
Hi Mitsuko,
You are correct about the two approaches, they are infact the ones that we follow as of now but they have their implications:
1. Storing in excel file, text file etc - Its not implicit to blue prism and needs to be stored at a shared drive location which will be accessible to bot, so the chances of failure increases and environmental locking needs to be applied explicitly.
2. Storing in work queue - Unique item key needs to be created, and every time a BOT has to access that even if that's for reading purpose they have to get next item for the details, which will have their delays in case of Multi-BOT scenarios.
The data item exposure I am talking about gives us the advantage of the two exposure already present:
1. Environment - Read access to all BOTs but no write access, value persistent in BP after run
2. Statistic - Write access to all BOTs but no read access, value persistent in BP after run.
So if we can have a exposure mode which has the below capabilities:
Read and Write access to all BOTs and value present in BP after BOT run.
Another thing to notice is that we need to have an explicit action in order if anyone/any BOT wants to delete that variable when it is not needed so that it won't be using the BP database space.
------------------------------
Manish Rawat
Project Manager
Mercer
New Delhi
Original Message:
Sent: 12-19-2020 15:40
From: Ritansh Jatwani
Subject: Data Item to store and update variables across sessions
Hi Manish,
In order to make changes to the variables across different sessions, you need to define those variables as "Session Variables". The session variables can be updated during the runtime of the processes for different sessions. You can view the option of making the variables as "Session variables" by setting the exposure of the variable as "Session".
Hope it answers your query !!
------------------------------
Ritansh Jatwani
Consultant
EY
Gurgaon
Original Message:
Sent: 12-17-2020 09:54
From: Manish Rawat
Subject: Data Item to store and update variables across sessions
Is there a way in which we can store and update the Data Items present in BP across sessions? its more like an environment variable but to which we can make updates too.
This will help us in storing variables across sessions like flags, data which requires the value from the other session run that currently has to be stored in externally like in excel, notepads, etc.
------------------------------
Manish Rawat
Project Manager
Mercer
New Delhi
------------------------------