Blue Prism fast search?

riderc1

Member
I have a process I'm developing that spends a lot of time searching a collection for results. The collection has about 120 items (string is the key I'm searching for). Based on my test results, the loop is spending anywhere from 5-7 seconds searching for a match. This is easily 90% of time per iteration.

Does Blue Prism have anything like a hash or dictionary search? Right now, I have a loop for the collection and a conditional to see if the strings match.
I created a "cache" to try to help speed things up - if it finds a match, it adds it to a cache collection. The search hits the cache first - if not found, it then goes to the full collection. For what I'm doing, the cache does help as a lot of the same entries are repeated. (I am storing a key name along with an integer. The integer represents the number of down arrow presses are required to access an entry in the application we are trying to automate. This is kind of ugly, but its the only way I have found to select an item in the drop down box.)

I'm contemplating moving the collection data to a database and making a web service available to my process. I think this would be faster than what I'm doing now - even if it is 2-3 seconds, that is a nice speed improvement over what I have now. Other advantages would be data outside of my process. The data does not change frequently, but there will be changes over time.

Thanks in advance for any ideas on a faster way to search collections in Blue Prism.
 

pug

New Member
What you are looking for is "Filter Collection" in Utility - Collection Manipulation.
 

riderc1

Member
I went through my process and replaced my loop/collection searches with the Filter Collection. Surprisingly, I'm not seeing the speed up I thought I might. It's about 1-2 seconds faster per iteration.
Running in debug mode (where you can see Blue Prism executing steps), it's much faster as it doesn't show the loop. When I run from session manager (non-debug), it's still much slower than I thought it would be. Hmm.
A lot of the work is comparing some Excel data against collections I've created to verify if the data is good (exists in the collection). There is some interaction with a Win32 app - that is obviously a bit slow (it's about 4-5 seconds). The rest of the time is checking the collections (8 to be precise).
 

riderc1

Member
Sure. Our company has acquired another company. We will be using Blue Prism to assist in importing the data from the new company into our system. The software we both use does not offer an import feature (yes, really).
The spreadsheet will consist of names, address, product codes, classification codes, etc. I'll use Billing Cycles as an example. In this case, the collection has 4 entries. Other collections in the process have as many as 200 entires. I had been using a loop to go through the collection, do a string comparison for a match or not. I switched over to using the filter search for all.
I'm basically doing the following for my collection searches now (there are a total of 15 for each row in the spreadsheet):
1. Get the data to search for. I assign the field I'm looking for to a data item called Looking For (was easier for me to see what was happening during development - realize I could remove these and reduce processing time by some amount).
2. Run the Filter Collection search. I then using the Collection->Count Rows to see if any data is returned. If Count Rows > 0, I know it found a match. If the conditional fails, I am storing the failed results in another collection.
3. At the end of the overall loop, I go through the "failed collections" and create a row in a spreadsheet so the accounting team can updated entries that are not going to import properly into our system.
On average, its taking about 10 seconds per row to check the spreadsheet values. About 5 seconds of the time is interfacing with the Win32 app we are importing data into - I don't think I can speed that part up as the Win32 app is slow no matter what. However, the other 4-5 seconds of time seems quite slow for scanning collections for a match.
 

Attachments

  • Screen Shot 2019-04-05 at 8.38.33 AM.png
    27.1 KB · Views: 65

pug

New Member
This seems okay and shouldn't take 4-5 seconds. Can you see in the logs where the time is?

If it is the "filter collection" that takes time can you show the filter string?
 

Shivam Rastogi

New Member
Hi one small question in continuation with the above query.
Instead of excel file I have a pdf file and around 50 search terms in the collection which i have to search in the pdf and count the iterations of the matches.
Excel manipulation can be easily handled through collection manipulation also, but i'm not sure how to search in the pdf. Currently i'm taking around 30 mins to search 50 items in the pdf.
Please help.
 
Top