Chapter five, input output data and control room. In this chapter, we'll be talking about input parameters, output parameters, different data types available within blue prism, control room and process stage input parameters. A stage from a parent page, along with the redirection of program execution to the sub page can also pass along some data items that may be used for further computations at the receiving end. So, suppose, a main page may send a number of iterations needed to be performed in a looping action available in the sub page. The data item with the count of the loops needed to be performed shall be passed on the sub page, which can be leveraged by the stages to operate. This is a better way than marking the variables as global, like a variable to all pages.
Which we discussed towards the end of the last chapter. Since data integrity must be taken care of in real time projects, we may be dealing with sensitive data such as login credentials, bank account numbers, etc. and making them unnecessarily a variable to different operations might risk the overall system security. Let's take an example to discuss how input parameters work. Suppose, we have a page like called looping in here, which we can see. And we have to iterate through a loop X number of times.
So what we do is at the destination end, which is the looping sub page, we simply go to the start stage. And we open it and we see an input tab available in here. And here we add the input parameter. So we use the Add button. We provide any name, let's say number of iterations. We can provide an option and description max number of loops, which is going to be of numeric type and just keep it blank for now.
So what it's going to do is when the main page will be calling this sub page the looping page, it will pass along a data item, which will be sort of caught or which will be taken or received at this destination at this start stage. and the value which has been passed will be stored in some data variable, which we are gonna create in just a minute. We call it as max loops. Right We provide it as a numeric type, no initial value is required because at the beginning itself of this page, the data will be stored in the back loops, right and suppose v Create, you know the way the same example that we used in the circular past exercise, we're gonna decide whether we want to re execute. And what we're going to do is first we'll create a data item. We're going to call it as counter with initial value of zero and the numeric type.
And what we do is we use the expression whether counter is less than maximum number of loops, which we got from the main page. we validate the expression, yes, it is valid. It okay. And we also increment the counter. So, counter plus one and we store the value in calendar itself. The Add to add for Once you click on the any stage, right and once you have a blue rectangle surrounding this or outlining this stage, then you can use that particular stage.
Any number of times you don't have to drag and drop every time. So you simply click here and here and should be all set. Now, I want to use link where if the condition is yes, it will be executed. We also use the start condition here and if it is no, we get it here. So, to reiterate, or to summarize, what we've done is we are going to get the data of maximum number of loops that need to be executed at the sub page level which is called the looping page. From the main page we got that data item and we also have a counter variable with an initial value of zero, it will be incremented.
Each time this increment counter stage is executed by a value of fun. It is done Check whether this counter variable is less than the maximum number of loops or not. If it is less, it keeps on trading the router and keeps going back to the stage that we have given in like the initial condition of incrementing the counter, and it keeps on going back and forth. And once this condition is not satisfied anymore, the process will end. Now, since we have given an input parameter, let's say, do you have a data item that has data on itself? This is the value that I want to pass, right and initial value is, let's say seven.
So this is how many times and I'm passing this value from the main page. This is how many number of times I want the loop to be iterated, right? So once you access the page, right, you want to create a reference To the existing page, yes, which is looping page finish, you simply, you're doing nothing but just passing the value, right. So what I'm gonna do is in this page reference stage, you simply open it. And you see that the same input parameter with pretty much the same details is already available within the page reference stage of the main page. Or we can call it the parent stage because this looping This is the page which it is referring to.
And this whole main page will be called the parent page while the looping page will be called the child page. Right? So looping may act as as a parent, if it is referencing to page number two, let's say right, so looping will be a parent page for page two and page two will be will be its associated child page. Right? These are like quick terminologies. We often use them in usual computer programming as well.
We are back to the main page where we have the page reference properties and of the looping page that we are referencing to and here we are providing the value as data one. So, this data one value, the initial value, it could have been like we might have performed some computations to come up with the maximum number of loops that may need to be processed in a in a in a process flow right. So, like there could have been some logic that we may have implemented, and then that value may have been passed in this page reference. And subsequently, the sub page would have acted accordingly. Not just for the looping poses, but could be any number of purposes, right, you may want to pass on your login ID and passwords to some subsequent pages where they might be entered into another system or are used in any other computation.
So that's how the input parameters work. And let's run it in a normal flow to see if it is able to basket value. And if the looping is also going on correctly or not, no errors, as you can see, once we reset the whole program, we run this looping. And you can see the max loops is already seven, which was the value that we provided. Yes, because counter is still one, it went to keeps on going, let's go to let's make it a little faster during the execute sorry, a little faster. Now, you can see right the difference in the execution speed five, counter is six now, and seven is not equal seven.
So it ended it went back and the process ended. So as you see, once this whole page ended, then it went back to the page reference stage and the next subsequent stage in the main page itself is the end stage and that the process ended. So we were able to pass on a value from a parent page to a subsequent child page successfully. Using the input parameters, we may also have, you know, instead of providing just a straightforward data item, we could have either provided a static value like eight, right, I can provide a value of eight right here itself. Or another way is we can open this expression editor. And that way I'm sure you guys must have been a little familiar with this screen.
Now, this is the expression where editor or the expression chooser screen, where we provide an expression and we also are able to validate it This expression is valid. So we can pass the static value we can pass a data item, we can perform some computations and directly like like eight plus data item, right. So some computation involved we can validate. And that way the initial value of data variable which is seven plus eight, right 15 would have been passed and in the destination side and the looping stage in the looping may page in the looping page itself sorry. So that's how the input parameters work. Okay.
Next topic is output parameters. Similar to the input parameters where data is passed on from main page to a sub page or from a parent page to a child page. output parameters are used to pass data items from a sub page back to the main page or to the parent page. So the received data shall be stored locally on the main page, where it can be further modified or displayed as per the business requirements. So a quick note that both input and output parameters are not simply data interactions between main and sub pages, but rather between parent page and any corresponding child pages, no matter how down the hierarchy it is. These concepts are valid for those for any parent and the child page is subsequently So, let's take the example where we are going to pass two data items.
Let's we already have data one we call it data, two of numeric type and a value of eight. And what it's gonna do is, you're going to refer to this page, and we're going to name it as addition. Right, and in here, we are gonna perform an operation where the addition of two numbers which will be passed as an input parameter will be performed, and the output will be sent back to the main page. Right? So you're going to create three data items. The first one we're going to call as number one, and it is a numeric type, no initial value.
Similarly, number two of numeric type and this We'll be the result which will be storing the result. So, what we're gonna do is we're gonna open the stock pyrometer that the way we did it for the input parameters. Second number, right, this is we have already discussed this before, so we're gonna add a calculation stage with the name as num. And we're gonna add these two variables, which the values which we got from the input from the main page. This data type was not visible. This data was not probably selected.
So that's why this result data item was not visible before. Now, the result is visible here, we store the result and the result. Okay. So, what we just did now, as of yet was we simply got the number one and number two data items from the main page. And we got this the computation where we worked on you know, adding the two numbers that we stored from the input parameters that we received on beginning of execution of this sub page. And we stored the result and this result data item.
Now we need to pass this result data item as an output parameter of this computation and this will be passed back to the main page where we are gonna see if it worked out or not, and and subsequently, probably there might be some other computations involved in your, in your business logic that you might be trying to implement. So Accordingly, we'll use that data item. So for input parameters, we open the start stage right. For output parameters, we open the end stage. And here we have the outputs tab, which is for the output parameters, we add the item, we name it as anything. output, or addition, result, right?
Data type of number, and they get the value from this result item that we just got. We hit OK. And now once this is executed, it goes back to the main page where the reference would have been done right. We opened the page, we started this page activity of this stage. We're gonna refer to this addition page, and we're going to link it just like that. And we're also going to have data item, which is gonna be the output of type number. And as you can see, once you open this edition, it has two input parameters, and it has an output tab as well.
So all that you did at the sub page level, everything gets visible in the stage, which is the page reference stage itself. So first number, where are you getting the value from? You're getting it from the data one, right? That's the one that you're passing on to the sub page. data to, right. And the output which you got from the sub page of the addition page is gonna be stored locally in this output variable, data item.
You hit OK. And you're all set pretty much. So once you run this, let's run it at normal pace for now because no looping and anything so it's gonna be okay. We start we are Once we did number one, number two got the result is stored and we got the output as 15. Right. So, as you see, input parameters and output parameters, both are very important to, to be able to pass on data items between different pages. And that we have like a secured layer of a logical layer that we can implement, to make data visible to only only the required that are visible to add the sub page level, you wouldn't want all the data to get visible to do all the processes.
Like you know, in you can analogy could be like, you have a admin like System Administrator right in an office environment, who might have access to all the resources or all the capabilities of an application of any enterprise application and based on the authorization access given to each user of their application, they might have some portions which are, which have restricted use and some which are available based on their job requirements or any capabilities that they might need to leverage. So that's how the input and output parameters work. And we can pass on data items from one page to another without making them visible to all pages globally. The next topic is data types. Up till now, we have mostly used numeric data types to perform computations. However, there are other data types as well, which are very successfully handled and managed within blue prism.
In real life scenarios. We deal with a lot of different data types, but the major ones are these number. Again, as we have shown before it's used to store numeric data. Text is used to store any alphanumeric characters. flag is used to store Or boolean value like true or false. Like if a flag is true then probably you compute some operations and if it is false you would want your process to go in a different direction or perform some other level of other set of computations.
Then date data type is used to store calendar dates. And we have password which is used to store critical data like user credentials, which even when typing or when being worked upon is not as accessible as or as view visible as dots, right like the way you enter password for your for any of your mails or login or any enterprise applications. So those credential viewers is supported through this password data type. Alongside we have other supported data types as well other than these, like daytime image time, binary, etc, etc. So we'll take an example to operate on a date variable. Consider that you intend to create a process that is going to add 15 days to the current date.
So whatever data is available from the system, running the program, this blue prism program, it's gonna take that data out of the current local system, it's going to add 15 days to it, and it's going to store the result in a variable. Right. So what we're going to do is I'm going to make it as new day, except type date, right? We hit OK, the user calculation stage to perform the computation right on data items. So what we're going to do is you can see you have some functions in here. Available depending on the type or like the environment that work on the complete environment altogether, which we'll be discussing in a few subsequent chapters, but what we're going to do is we can see like the date has these different functions, predefined functions and these are like all Java based predefined functions.
So, what you want to do is you want to add certain days to it right. So you have ADD days function, right. And here, you can simply print as today, which is going to be like the date taken from the system locally. And how many days you want to add 15 days is what you want to. Once you provide these parameter parameter values, you simply click on this face button an expression is automatically generated right Now, if you want to see, you want to store the result in this new date, right, you also want to validate and the expression is perfectly valid. So these predefined functions you can find online, whatever is supported in Java should be should be workable.
And that's how you can like format data in a particular format or add months to a date. Any particular date there might be like data already available. So you instead of putting this value in here, you could have put in some data item as well by simply dragging, simply dragging and dropping it here. And we can add a number of days based on the numbers there item, which could have been anything we may have got it from some other computation involved prior to getting to this stage, etc, etc. So you hit OK and once you link the program Let's reset. To see like, there's no other stage already been in the process of execution new date, it's gonna be like this.
So after 15 days from today, like the day, when I'm recording this video, it's gonna be 612 2018. Right. So this is a very good example, you can also use different functions available for text, like you want to concatenate two different data items or any static values that you may monopod you know, use in here, and you want to get some text like, it's also giving you a pretty good example, that let's say, you have a string of example, and you want to get the from the left you want to get left for three characters. So it's also give you a very good example that this is how the function is used. Left brackets example comma three We'll give you just x A as the result, and you can store that result in any data item that you may have used in your program. Right?
So try out these different functions and they are pretty straightforward, pretty easy. And if there's any confusion, you can always look online and see you know what exactly different functions do but the function detail in itself should suffice in terms of using a function and understanding what it's going to do. Right. Okay. Next, we are going to talk about control room. All the process studio is the area where process flow diagrams are created and tested.
In real time projects. The box are managed through a separate layer of application called control room. The control room displays the processes which are published to it. This means initially when the process is created, it is in Published state and upon creation and thorough testing, it is published to make it available to control room for operational use for scheduling or for any sort of maintenance. So when you open the blue prism application right within the file under the File menu, right you have this control and this is how the control room looks like. So, before delving into the control room operations, we are going to discuss how to publish a process and we're going to discuss a few more terminologies.
First, to make a process available in a published state. We usually check this rectangle box which is available by default, you cannot even delete it. It's something which has exactly the name as you have given to your process process flow diagram. Right and For this, you simply go inside and you check this box in here which is the publish this process to the control room and we save the changes and go to the control room and we refresh. So, sometimes if it is not available, what you got to do is you got to save it. And every time it is important to provide a summary.
You can provide anything you want. Once the process has been saved as well, you again try refresh and see if it doesn't work, then you may want to come back to the control room and you see that now the process is available. So this is more more or less like a synchronization issue. take a couple of minutes seconds as well. But once you refresh it, it should be available right. And currently if you see there is a lock because we have also opened the process flow, it's in the background still open right.
So, before delving into the control room operations, these are the terminologies that we have to understand session. So, you can see the session management is what we have opened, which is which also comes by default when you open the control room. It is an instance of a process published to the control room. Each process is visible under this session management option as an available process. You can see right here, this is what we just published. Then comes the resource.
So, a resource is a computer system, which has blue prism installed in it. sessions are allotted to those resources to operate upon. Right. And the last is the environment and environment is a group of robots that work together. Gather to accomplish multiple process operations, forming a virtual workforce. Okay, so these, the control room has three panels displaying all these three things that we just discussed.
And to start a session, we drag and drop the session onto an available resource. So we put it like this and it just got available. Right. So, as you can see, it's currently in the pending state. Right, and you can start the process right away by simply selecting this process and clicking on the start selection. It got completed.
So everything went in the background and you can always check any view process, you can use the actual process as well. And what you can do is, if you want to run it again, just drag and drop it here. And that way, the process becomes, again available independent state, once it is completed, there's nothing you can do. So once you have it here, which is also published, you start the process either right clicking or simply on the Start selection, and the process gets completed. So all everything was done in the back end. So there's nothing that you can see.
But if you're interacting with the external applications, which we'll be discussing in the subsequent chapters, you can actually see the movements of different operations that are being performed. Right, but it's a good practice to make the bot available in the back end so that you know, you don't see the board working and you can probably use your system for other purposes. ratios that you may want to perform. Right? So, this pretty much sums up the control room operations. And we can also schedule and all this stuff which we'll be discussing, and about the queue management, which is a very, it's a difficult beast to attain.
We also before we sign off for this chapter, I want to discuss the last stage called the process stage. A process stage is sort of like the page reference that we used, but instead here we use a process flow. So, all the processes that I have in my blue prism right now, I can access them and that way, once the program flow will be executing this stage right, then it will, the program will get redirected to that particular process and all the operations will be performed over there. And once all the operations get completed, it will come back to this main page itself or any page which was referenced referencing to the particular process. And also, just like the way we were passing data items as input and output parameters between different pages in a process flow, we can also pass data items as input and output parameters in between the processes as well.
Right, we can simply use the same start and the end stages over there at the destination end. And those parameters will be visible, we can pass on any of those values that we have available locally. And we can also grab the values from the destination back to the source using the outputs table here. All right, this pretty much is how the programs in the process flows work.