Discussion
Pegasystems Inc.
US
Last activity: 16 Jun 2023 19:35 EDT
Ask the Expert - Pega Robotics with Thomas Sasnett (2023 Edition)
Pega Robotics is one of our hottest topics here in the Support Center and for 2 weeks we have Lead Robotics Architect, Thomas Sasnett to answer your questions!
Join @ThomasSasnett June 5 - June 16 as he responds directly to your questions!
Make sure you Favorite and Follow For Updates!
Questions Open 5th of June!
Meet Your Expert, Thomas:
Thomas is a Lead System Architect for Robotics and Workforce Intelligence. Both have been designing and developing robotic automation projects for almost 20 years using the Pega Robotics Studio and its predecessor products. He has worked with clients in varying industries, including Financial Services, Insurance, Telecommunications, Collections and Call Centers.
Message from Thomas:
I am excited to answer as many questions you have regarding Pega Robotics or Robotic Process Automation.
-
Like (0)
R Aakanksha Varma THOTA Tulasi chinna gopala swamy SHARVANI M Maleesha Wilfred Halyna Klachko -
Share this page Facebook Twitter LinkedIn Email Copying... Copied!
Updated: 9 Jun 2023 11:13 EDT
Infosys
US
I have a few questions/suggestions for Robotics (mostly v22 related):
1) In Robotics v19, when using the playback tool, there was the ability to navigate forward and backward through the log file. In v22, there is no step backward. While you can choose an exact point from the step list, it doesn't indicate the current step. You'd have to know exactly which step to go back to. This can be difficult in larger log files. Is there any way to step backward that we're not seeing?
2) This is more of a general studio question rather than v22. Many years ago I created a simple standalone exe to parse larger log files and only extract lines under the Playback category into a new text file. This helped step through log files much faster in playback. In v22, with the log changes, it still works, but requires some manual changes to get the log files to work in playback. Is there any plan to incorporate something like this in the playback tool? Having it automatically create a temp playback file would help expedite troubleshooting.
I have a few questions/suggestions for Robotics (mostly v22 related):
1) In Robotics v19, when using the playback tool, there was the ability to navigate forward and backward through the log file. In v22, there is no step backward. While you can choose an exact point from the step list, it doesn't indicate the current step. You'd have to know exactly which step to go back to. This can be difficult in larger log files. Is there any way to step backward that we're not seeing?
2) This is more of a general studio question rather than v22. Many years ago I created a simple standalone exe to parse larger log files and only extract lines under the Playback category into a new text file. This helped step through log files much faster in playback. In v22, with the log changes, it still works, but requires some manual changes to get the log files to work in playback. Is there any plan to incorporate something like this in the playback tool? Having it automatically create a temp playback file would help expedite troubleshooting.
3) If a utility/component project was created in v19, we could import this project into another solution and utilize those automations. In v22, we have assets, but they currently do not currently support global containers. This limits their functionality. If we were to build a utility project to use in other projects, and it utilized any globals, is there a way to merge this global container with another project or import this project into another to use this? It seems if we create 2 projects that utilize the global container, there is no easy way to merge these projects due to the single-global container. (We could possibly modify the XML directly, but we'd need to update all automation references to the global objects to the new global container ID.)
Thanks!
Pegasystems Inc.
US
- I know that some new exciting features are coming regarding log playback in upcoming releases. Check the build notes page for V22.1 as these changes will be listed there when released. I believe a back button will be added in the next release.
- Is the purpose of your parsing simply to reduce the file size so the logs load faster? This may be addressed in the upcoming log playback features as well. Stay tuned for more information on those.
- In the latest versions of 22.1, you do have the ability to add Global Containers to assets. Utility Assets are a new feature being announced at PegaWorld as well that allow you to create assets from things other than Applications. If you ever did want to use Global Items and then share the automations from one project to another without assets, it would involve a manual merge of the items in the XML for the globals. While possible, this is not recommended, and you should be able to use the later versions of 22.1 to add Asset Globals to accomplish this today.
-
Chris Fischer
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
Our Ask the Expert session is now open for your questions!
Ask the Expert Rules
- Follow the Pega Support Center's Rules of Engagement
- This is not a Live Chat - @ThomasSasnett will reply to your questions over the course of the session
- Questions should be clearly and succinctly expressed
- Questions should be of interest to many others in the audience
- Have fun!
-
Thomas Sasnett
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
Here is a tip that I found useful for a developer this morning. In 22.1, the default interrogation method is to use X-ray Vision. This works great for most things, and I rarely disable it. For clones however, you will need to use traditional match rules. An example is when you are interrogating an HTML table and need to clone the table rows and then access cells inside of the table rows. In this case, when you interrogate the table cells, be sure to check if UseElementID is enabled for that control. You can do that by selecting the control in the Palette and then changing to the advanced view in the properties window (by clicking the three dots at the top of the window). Often, each row will have its own element ID and have some sort of index value in the ID. If you have UseElementID enabled, then it is only going to match on the first row regardless of what you change in the match rule section. This is also a good tip whenever you are interrogating and not using X-ray.
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@MarissaRogersGood morning everyone. I thought I would kick off this post with a quick suggestion about how you might join strings together.
For this example, consider an automation where you take the three parts of a phone number (from the USA or Canada) and want to display them with parentheses around the area code, followed by a space and then the telephone prefix followed by a dash and then the line number. (888) 734-2669 for example.
You might use a Concat method as shown in the first example. This will work, however making any changes is a challenge. Since the parameters to the Concat method are dynamic, and order is important, changing anything except for the last parameter requires you to essentially redo the entire block. I would suggest using Concat only for the absolute simplest use case of joining of two strings together. For anything more complicated, I will always use the Format method.
The format method can be used to accomplish the same thing. The first step is to create a format string. For this example, it would be;
({0}) {1}-{2}
@MarissaRogersGood morning everyone. I thought I would kick off this post with a quick suggestion about how you might join strings together.
For this example, consider an automation where you take the three parts of a phone number (from the USA or Canada) and want to display them with parentheses around the area code, followed by a space and then the telephone prefix followed by a dash and then the line number. (888) 734-2669 for example.
You might use a Concat method as shown in the first example. This will work, however making any changes is a challenge. Since the parameters to the Concat method are dynamic, and order is important, changing anything except for the last parameter requires you to essentially redo the entire block. I would suggest using Concat only for the absolute simplest use case of joining of two strings together. For anything more complicated, I will always use the Format method.
The format method can be used to accomplish the same thing. The first step is to create a format string. For this example, it would be;
({0}) {1}-{2}
The parameters are enclosed with curly brackets and represent the ordinal number of the parameter order starting with zero. The first parameter passed in is zero, the second is one, etc. Using a format string allows you to easily change the format without needing to replace any of the parameters on the block. Once you have them connected, there is no need to reconnect any if you are using the same ones in the format string. If you decided to insert a country code before the area code, you can simply add a fourth parameter to the format string and then connect that to the block at list3. If you tried to do this with the Concat method, you'd need to redo the entire block.
-
Marissa Rogers
Updated: 9 Jun 2023 11:13 EDT
The Bank of Nova Scotia - Toronto Region
CA
We use custom DLL in a RPA solution. It built successfully and a copy of the custom DLL has included in the .Openspan package file. The RPA solution could not locate the assembly file when it is running with the RPA runtime environment. It works if the custom DLL manually copy to the runtime installation folder.
My question is that the manual copy of the custom DLL into Pega runtime installation folder is required and mandatory even the DLL file has been included in the package file?
-
Thomas Sasnett
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@FrancisH9625 If you use a custom DLL, it needs to be included in your package along with any of its dependencies. For development, you typically put these DLLs into %AppData%\Pegasystems\PublicAssemblies. You then reference them from there. That should get them to attach to your package. If you need to add others that may not be referenced, you can do so in 19.1 (which from your description I assume you're using) by right-clicking on the project in the Solution Explorer window and selecting "Properties". I no longer have a 19.1 install I can easily access, however there is a section in the properties window on one of the tabs called "Miscellaneous files". From here, you can include anything you like, and it will be bundled with the package. You should not need to manually copy anything to your runtime machines if you are including all of the files your DLL requires.
Updated: 9 Jun 2023 11:13 EDT
QBE Group Shared Services Centre
PH
Hello!
Would like to confirm about the ASO Manager in v22.1. This is because, as our practice that the ASO Manager tool being placed inside the Global Container when using v19. However in the new v22, we can't put it in the GC but can put it in an automation file. Is this a new implementation for v22.1?
Thank you!
-
Thomas Sasnett
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@Keithmar The ASO Manager as a component is not really required any longer in 22.1. The methods to access and work with credentials are now mostly static; meaning that they no longer require a component to be used. You aren't really adding a component to each automation in 22.1, you are really just calling the individual methods that the component previously contained.
Updated: 9 Jun 2023 11:13 EDT
Centene Corporation
US
Hi Team,
Currently, we are using the Pega BOTs to automated process in Edge browser (IE compatibility mode). As we have the Manifest V3 coming in, we want to understand the urgency of having the PBE component installed.
Our Pega BOTs are running in 108.0.1462.54 version. Would we be impacted if we remain in this version without installing PBE? What is the final version in edge we can remain in without having PBE installed? In short, is there a version until which V2 is also supported?
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@GokulP02There have been no recent announcements that I am aware from Chrome as to when Manifest V2 will no longer be supported. I am told there will be a six month lead time however. I would suggest that you plan for and begin rollout of PBE as soon as possible however as it is our most current and up-to-date means of interacting with Chrome or Edge.
Updated: 9 Jun 2023 11:13 EDT
Morgan Stanley
US
We tried running 19.1.151 package on 19.1.121 runtime and see no issues so far Is 19.1.121 runtime backward compatible and is it ok to follow cross version approach Please advise
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@SasidharB9516 We do not have a 19.1.151 version. Generally speaking, you should never expect backwards compatibility. Once a solution is upgraded, it should only be used in the version it was updated to.
Updated: 9 Jun 2023 11:13 EDT
Estes Express Lines
US
I have an automation that interacts with a text adapter screen. When first connecting to a session it loads the screen correctly. However, the changes made to the screen are not being captured. If I type into the window, or navigate to a new screen, the interrogation window still shows the screen it first connected to. Using a different emulator with the same Text Adapter file (same properties settings), the changes get captured and reflected in the interrogation window. Is there a setting in the emulator program and determines whether changes get pushed to the Pega program?
Updated: 9 Jun 2023 11:14 EDT
Infosys
US
I have a few questions/suggestions for Robotics (mostly v22 related):
1) In Robotics v19, when using the playback tool, there was the ability to navigate forward and backward through the log file. In v22, there is no step backward. While you can choose an exact point from the step list, it doesn't indicate the current step. You'd have to know exactly which step to go back to. This can be difficult in larger log files. Is there any way to step backward that we're not seeing?
2) This is more of a general studio question rather than v22. Many years ago I created a simple standalone exe to parse larger log files and only extract lines under the Playback category into a new text file. This helped step through log files much faster in playback. In v22, with the log changes, it still works, but requires some manual changes to get the log files to work in playback. Is there any plan to incorporate something like this in the playback tool? Having it automatically create a temp playback file would help expedite troubleshooting.
I have a few questions/suggestions for Robotics (mostly v22 related):
1) In Robotics v19, when using the playback tool, there was the ability to navigate forward and backward through the log file. In v22, there is no step backward. While you can choose an exact point from the step list, it doesn't indicate the current step. You'd have to know exactly which step to go back to. This can be difficult in larger log files. Is there any way to step backward that we're not seeing?
2) This is more of a general studio question rather than v22. Many years ago I created a simple standalone exe to parse larger log files and only extract lines under the Playback category into a new text file. This helped step through log files much faster in playback. In v22, with the log changes, it still works, but requires some manual changes to get the log files to work in playback. Is there any plan to incorporate something like this in the playback tool? Having it automatically create a temp playback file would help expedite troubleshooting.
3) If a utility/component project was created in v19, we could import this project into another solution and utilize those automations. In v22, we have assets, but they currently do not currently support global containers. This limits their functionality. If we were to build a utility project to use in other projects, and it utilized any globals, is there a way to merge this global container with another project or import this project into another to use this? It seems if we create 2 projects that utilize the global container, there is no easy way to merge these projects due to the single-global container. (We could possibly modify the XML directly, but we'd need to update all automation references to the global objects to the new global container ID.)
Thanks!
Updated: 9 Jun 2023 11:13 EDT
Pegasystems Inc.
US
@TomW4114 This likely means you are pointed to the wrong DLL that the emulator is using. I generally look for the WHLLAPI dlls and point to those. You can use a tool like Process Explorer to see a list of the DLLs an application has loaded. I would use that to check to see if the DLL you are pointed to in your adapter is the same as the one loaded in the application.
Pegasystems Inc.
US
@ThomasSasnett It might also indicate that your ShortSessionName is incorrect. I would validate that too.
Estes Express Lines
US
@ThomasSasnett To further clarify a few things:
I am attempting to switch from one emulator to another. I already have the automation built to use the first emulator (IBM PCSWS.exe), including all my screens and controls interrogated. With the PCSWS emulator, I'm using the whlapi32 dll.
When I point to the new emulator (IBM ACS) still using the whiapi32 dll (after installing the EHLAPI bridge application) I am able to get my automation to connect, match the first screen, and even enter values in the interrogated fields and hit "Enter" to proceed to the next screen. It's just that Robot Studio is not receiving any updates from the emulator as this happens. When doing this in interrogation mode, it just shows the screen as it was when interrogation was started.
I attempted to look at the dlls being used with Process Explorer, but I'm not seeing anything that looks relevant. When I run the PCSWS emulator, I can't see any reference to the whlapi32 dll in Process Explorer, so maybe I'm not looking in the right place?
Another thing I've tried is to look at the WinHLLAPIHostLog file when using both emulators to compare. When I start an interrogation session with either one the log shows the same exact activity. However, when I then type into the PCSWS emulator, the log shows activity, but with ACS it shows nothing.
This old support thread is exactly the same issue I have, but unfortunately doesn't have a solution posted:
@ThomasSasnett To further clarify a few things:
I am attempting to switch from one emulator to another. I already have the automation built to use the first emulator (IBM PCSWS.exe), including all my screens and controls interrogated. With the PCSWS emulator, I'm using the whlapi32 dll.
When I point to the new emulator (IBM ACS) still using the whiapi32 dll (after installing the EHLAPI bridge application) I am able to get my automation to connect, match the first screen, and even enter values in the interrogated fields and hit "Enter" to proceed to the next screen. It's just that Robot Studio is not receiving any updates from the emulator as this happens. When doing this in interrogation mode, it just shows the screen as it was when interrogation was started.
I attempted to look at the dlls being used with Process Explorer, but I'm not seeing anything that looks relevant. When I run the PCSWS emulator, I can't see any reference to the whlapi32 dll in Process Explorer, so maybe I'm not looking in the right place?
Another thing I've tried is to look at the WinHLLAPIHostLog file when using both emulators to compare. When I start an interrogation session with either one the log shows the same exact activity. However, when I then type into the PCSWS emulator, the log shows activity, but with ACS it shows nothing.
This old support thread is exactly the same issue I have, but unfortunately doesn't have a solution posted:
Any ideas?
Pegasystems Inc.
US
@TomW4114 This one sounds like something I would need to look at live. I would suggest opening a support request with our customer support team. They can get on with you and examine your environment and emulator via a screen share to understand what is going on.
Updated: 12 Jun 2023 6:03 EDT
Crochetech
IN
Hello @ThomasSasnett ,
The variable varInput is a String that holds the value What is the output?
What is the outcome of the above automation?
- A. An exception is thrown.
- B. The variable varOutput ends with C.
- C. The variable varOutput ends with A.
- D. The variable varOutput ends with B.
Could you please suggest right answer in this automation.
Pegasystems Inc.
US
@PankushS This is very oddly-phrased, however here is my logic;
- We do not know what the value of varInput is at the start based on what you have provided. If it started with a question mark, then the answer would be C (it would end with "A") since it would take the upper path because the location of "?" within the staring would be 0. Therefore, "A" would be appended to the string.
- If we do know the value of varInput and you have not provided it or it is mentioned somewhere else in the question, then the answer would depend on whether or not it started with a "W".
- If it started with a W, then the answer would be D (it would end with a "B")
- If it did not start with a "W", then the answer would be B as the string would have a "C" appended to it and therefore end with "C".
Unless we know what the value of the string is to start, we can only eliminate A as this would not throw an exception. From the phrasing of the question you entered, it looks like something is missing after the word "value" that might be important. If that is not present, then the most likely answer is B because the string is more likely than not to not start with a question mark and also not start with a W.
Updated: 13 Jun 2023 1:38 EDT
Hoverstate
US
We have a pega environment setup with multiple applications on it. Several of these applications use RPA bots. Previously we just manually started the bot on the machine, and it connected to the proper application and work group. Recently we went to setup Robot Manager fully so it can schedule, start and stop the bots and we can publish the packages to robot manager.
There are 2 bots I've tried to publish to Robot Manager, each to a different application. The packages seem to publish to the wrong application or something. When I pull up application A it shows the package for app B, and vice versa.
Is there somewhere I've failed to configure properly that guides which application a project will be published too?
Pegasystems Inc.
US
@DanQuinlog This can be one of several things that is best solved by getting one of our support team members to look at this for you.
I would start with looking at the application-specific decision tables. This is the most common way that a bot is assigned to a workgroup. I suspect you have some logic here that is moving these bots to the incorrect group.
It is possible for you to change the dynamic system setting (DSS) to have the workgroup be assigned from the CommonConfig, however this is uncommon and not likely what is happening here. Start with the decsion tables and see if there might be a misconfiguration there and if not, please contact our support team and get one of them to take a look with you.
Updated: 14 Jun 2023 9:59 EDT
Achmea Studio
NL
We want to add some Appsettings keys like below to our central Runtimeconfig.xml :
<!-- SQL Server : servernaam, sql account, password --> <add key="SQL_Log_Server" value="Server\bdiurr" /> <add key="SQL_Log_Account" value="user_xxxx" />
and want to read these keys values within an automation and use these values to create a sql connection to a sql server. But we dont know how to read values from runtimeconfig.xml in an automation when the robot runs. Can you help us with this?
Pegasystems Inc.
US
I would not recommend using the RuntimeConfig.xml for anything other than its intended purpose. For now, your solution may work, however there is no guarantee that a future update would not validate the contents of the RuntimeConfig.xml and reject it because it contains unauthorized data.
Would you please add a little bit about your use case and why you feel that adding these to the RuntimeConfig.xml is the solution to fulfill that requirement?
Achmea Studio
NL
@ThomasSasnett hi, the reason why we thinked to use runtimeconfig.xml is because we use a central runtimeconfig.xml for all our robots and users.
We want to log some activities of the robots centraly in an sql server database table. So we thought its better to have a central xml file or so that contains the sql server serven name, sql account and password. So if in the future the sql server database would go to another server then we only need to change one setting in one xml and all the robots will use the new sql server. The same is for the sql account and password. For incase these need to be changed for a security reason etc. If cant use a central xml like runtimeconfig.xml then we must change the database server name or the sql account or the password in each robot we have to update them with new servername or account or password and deploy the robots again. So in short: we want to have these twee values centraly to forcome a change of 100s of robots we have for in case server is changed or account or password.
Pegasystems Inc.
US
@UgurO833 If you are using Pega Robot Manager, then you do have access to the capabilities of the Pega Platform. You can expose a service that exposes data in a class you create allowing you access to values within Pega. This would give you a central storage location for these values without re-purposing a required file. You might also store this data in a centrally located text file.
Another option, especially well-suited since you are storing credentials would be to use a credential vault of some sort (CyberArk, BeyondTrust, etc...). There is no specific rule that states that what is stored in the vault is actually a credential, since it is really just a name and a username and password. You could store each of these values as credentials in your vault and retrieve them within your automations using the CredentialManager component. The way it works when you configure Runtime to use a vault is that any calls in your automation to either of the credential components are essentially routed through whatever mechanism you've configured for storing credentials. For testing, you could use local storage and then configure your other bots to connect to the vault. If you were to store credentials any other way, they would be inherently insecure.
-
Ugur Ozdemir
Updated: 14 Jun 2023 10:00 EDT
Eclatprime Digital Pvt. Ltd
AU
Hi,
We are using Pega platform 8.6.1 version, will it work for 8.6.4 Pega robot manger with this Pega platform, somewhere i saw if want import 8.6.4 Pega robot manger at least need to use 8.6.6 Pega platform.
Could you please clarify on this.
Regards,
Sarveswara Reddy . P
Pegasystems Inc.
US
According to the documentation, Pega Robot Manager only needs to match the major and minor version with the Pega Platform version. According to the link below this is a compatible scenario.
https://community.pega.com/marketplace/component/pega-robot-manager
Updated: 16 Jun 2023 11:08 EDT
Ameriprise Financial Inc
US
We as an automation team build Robotics solution on Pega and few automations purely on .net. We would like to build some common utilities which gets use in both type of solution. So we would like to know the new IDE v22 or V23 for Pega Robotics supports which .net. If we create something in net6.0 will it work in V22 or V23 Pega Robotics solution.
Pegasystems Inc.
US
@ManishM5893 For User Components to be used within Pega Robotics V22.1, we recommend targeting your assemblies to .Net 4.8.
Pegasystems Inc.
US
Thank you to everyone for an amazing session on Robotics, especially our expert @ThomasSasnett!
This session is now closed for future replies. If you have a Robotics question, please write a new post.
-
Sophia Windsor