 Hello everyone, I am Sanjay Gupta. I welcome you on Sanjay Gupta Tech School. So I have Ankit with me. Welcome Ankit on the platform. So Ankit is conducting Appian Bootcamp and today is day 10 of this bootcamp. So right now, like in this session, he will be sharing more insights about Appian and throughout all the sessions, he has shared a lot of information and I can see the view count, lots of people are getting benefited with this bootcamp so that they can learn Appian and they can build their career as it is AI-powered intelligent business process automation tool. So those who are searching for job as a fresher or experienced professional and you want to start your career with Appian, so this bootcamp is a great resource for you and like Ankit is managing one more channel where he's producing some content so he will be telling you about that in the later slides. So with this note, I start, like we'll start the session and this, this, you can note and follow if you want to receive timely reminders for the sessions, right, so over to you, Ankit, please let people know about your channel where more Appian content is available and then please start with the session. Yeah, sure, thank you. So if you want to check the recording, know that of these sessions or other contents related to IPN, you can check our YouTube channel that is the CodeMestro, unlocking the code master within you and if you have any query, any questions, you can put that query, your question in the CodeMestro Telegram group and we will know that get back to you or we will raise all your issues from that. So in our yesterday's sessions, we learn about APN interfaces. So today also we'll continue with some new features, right? So you know that in yesterday's sessions, we learn about the design mode in APN interface, okay, where we can drag and drop the components and we can create the interface, okay? So today we will learn about the expression mode, okay? Where we can write the code also for the particular component and we can configure the parameters of the particular component from the expression mode, okay? So I will show you how we can do this. So yesterday we created this interface, right? So I'm opening the same interface, okay? And now you can see, like yesterday, we know that we dragged this particular field, okay? And we configured this from the design mode itself, right? We did not write a single line of code also, but we configured the whole, this component directly from this design mode. We have to just configure these parameters from here and we can use, okay? We now need to write a line of code, okay? But if you want to check the expression, now the code for the particular component, we can click on this expression mode, okay? Now you can see for this particular text field that we created using design mode, we have some code here, right? And this code is in cell language, that is APN's own language, okay? So you can see here we have some parameters like label, label position, save into refresh after validations, okay? It has some more parameters that you can see from here, okay? So APN provide the documentation also for each and every component, each and every function with the component. So you don't need to go to documentation check, you can directly check from here as well. So you can see here, we have one parameter that is label, instruction, required, read only and other parameters, okay? That we can configure, okay? And we can use this particular text field, okay? And we have some examples, some sample values and everything is in this documentation. So you can check this one whenever you are working on any of the component. So suppose this is the label, okay? That is text. If I want to change this one to employee name, so I can type like this. And everything like every string in APN come in between the double quotes. So now also you can see this employee name is a string, a text string, that's why it is coming in between the two double quotes. So like this, I change the name of the label of this particular field. If I want to change the label position because currently it is above. So it is coming above the text field. But if I want to use the different one, then you can check the values from here. You can see this is label positions, okay? And these are all possible values. The default is above that is coming now, but we can select other three values as well. Like if I configure adjacent, okay? And you can see now the label is coming adjacent to the text field. If I select the other value that is justified, okay? So now I have to just copy from here and I have to just put here. You don't need to write also that one. Now you can see it is justified, okay? If I want to collect, you know, hide the particular this label, okay? Then there is other parameter for this one that I can use and that is collapse. So like if I use this one, this label is hide, right? Now you can know the label is not visible here. Then the other parameter that is required. So if you want to make this particular, you know, text field is required, okay? In that case, I will use this required parameter and it's possible values are, it is a Boolean type you can see from here and it's possible values are true or false and default is false. That means currently it is not required, okay? But if I configure it as true, then you can see it, the aspects symbol is coming here. That means it is required. So you cannot submit the form until you fill this particular field, okay? Then other parameter that is instructions, okay? That also we can use. If you want to give some instruction to user to fill this particular field, okay? And instruction is also a text, right? That's why I'm using double quotes. Can we zoom in a little bit? Left side, left side, text is like two, less. One second, sure. Is it visible now? A little bit more. Yes, now. Okay, okay. So now you can see we have instructions here, right? About this one, employee will come here. So like that we have other parameters, like read only, okay? If I want to make this field as read only, that means user want to be able to update this one. Then I will use this read only parameter and it is also brilliant type. So default value is false, okay? That you can see from here. That means it is coming editable. But if I use truth, then it will come into read only mode, okay? And user want to be able to update this one. You can see here, there is no any text, you know, the editable text field. If I want, you know, editable, then I no need to configure this field because this is a default value also. Now, come to this one, that is other parameter that is disabled. If I want to disable this one, then I can use. This is also, it's boolean field and it's default value is false, okay? But if I want to disable, then I can use this. Okay, so you can see here, this is coming in grade and you cannot upgrade this one. Next, that is value, okay? So whatever value I want to show here, okay? In this one, I can configure. Now you can see in this text field, this value is displayed, right? The next is saved into, okay? So if I want to save the value of this input, okay? Then I use save into, okay? And you know that in expression rules, we have two type of parameters, right? One is tool input and other is local variable. So rule input is like a global variable for expression rule or interface, okay? For both, rule input is a global variable and local variable is a block variable. That you can see that we can use in block, okay? Only in block, but outside of rule block, we cannot use that local variable. So suppose if I'm creating, if I want to store this rule, you know, employee name into particular variable, then I will create a rule input from here, okay? From right side, like I'm creating a variable, employee name will be text type, right? So now I can directly use this rule input, okay? And the rule input we use with this prefix, right? R-I, bang sign. So whatever I will type here, okay? Every statement, you know, complicated with comma in this one. We are, we cannot use this parameter two times. I'm removing from here. So now you can see the, if I type something here, a, b, c, then it will reflect here, right? In right side. So it is saving into this rule input the a, b, c value, okay? But still in this one, it is displaying Ankit on the right. It is not displaying a, b, c, that user inputting. Like if I type other value, a, b, c, d, then it will store a, b, c, d into this rule input, but still the value is not updating, right? Why? Because in value part, we are using the hard coded value, that is Ankit. So if I use the same rule input here as well, it will update, right? Because now R-I value is this a, b, c, d, okay? And we are using the same rule input here. So if I'm typing e, d, e, okay? Then in the rule input value and the field value is both are same now, right? So like this we use value and save into. Then if I want to apply some validations, okay? I can apply from here, like if I ask user to type less than three characters, okay? Then I can use the validation. If I want input in a particular format, then also I can use validation. So any type of validation we can apply from here, like if length, length function we use to, you know, get the length of a particular string, right? So if the length of this particular string is greater than two, three, then it will show a message, something like that, okay? And if it is, its value is more than three, oh, sorry, less than three, then we want so any validation, okay? Now if this validation is coming two times, I will remove from here. Now you can see here, we have one error, okay? So you can check from here, like expression evolution error, unmatched clause parenthesis. That means we are using extra parenthesis, right? So you can see here, this one is completed here, but I'm using with this one extra, okay? That's why it is giving me the error. If I remove this one, now we do not have error, right? And this one's length is more than three, that's why it is showing validation message, please enter less than three characters. If I have only three characters, this validation message won't come, okay? So like this, we configure the parameters of any of the component using expression mode, okay? So like this, we write the code. And in this one, every thing, every each and every parameter is already defined, we have to just put the value, okay? We do not need to write the whole code. Now, this is rule input. Similarly, we can create local variable, okay? That we learned during our expression rule session. So we can create the local variable similar to interface as well, okay? So for that we use a local variable function that we used in the expression rule session. So how we create, we will create a block, okay? Like this, this is a block, right? And inside this block, we create a local variable. Local, I can say employee name, I can simply say. If I want to define the value, I have to just put, you know, colon and I can define the value like A, B, C, D. I can define, okay? If I do not want to define, I have to just put the comma, okay? Now, this whole component, I can put inside this block, right? If I do not put in this block, I cannot use this local variable because local variable's life is in a particular block only. So now if I want to store this employee name value in the local variable, I can use this one. So instead of rule input, I can store the value in this rule input also, sorry, in the local variable also. I have to just copy this one, okay? And I can use here. I have to use save into also, right? So I will use the same local. So, you know, to use the local and rule input, both are same. I'm using this saving to two times, I have to remove this one, okay? Now, we remove the rule input, right? Now the value will be stored in the local, this local variable, EMP name. So if I'm typing something, now you can see value is coming in this local, okay? But not this rule input, okay? So like this, we use local variable, okay? And all other properties of local variables are also same like that we use in expression rule. So if you want to learn more about local variable, you can check our expression rules as well. So other input fields that APN have like paragraph, integer, date, date and time, file upload, there are more other fields that you can go through, you know, from that using the documentation. Like we have this type of input fields that you can see here in design mode, paragraph, integer, decimal, date, date and time, encrypted text, file upload, signature, bar code, okay? Where user can input the value. So similarly, if I want to use the paragraph field, I can either I can drag from here or I can write the code, okay? So if I want to use a paragraph field, I have to just type the a paragraph and I can configure the parameters, okay? So similarly, we can configure the parameter for paragraph field as well. What is the difference between text field and paragraph field, the size, okay? You can see the size, it is a bigger size, right? Then this particular text field. If I want to use integer field, okay? Then I have to just type a integer field, okay? And now you can see here the integer field. Integer field and text field are almost same, just there's one difference that it support text and integer both, but it only support integer. If I try to type some string here, like text type of a string, it can be given error or validation to me, like if I suppose value is, suppose if I take is a text type, okay? I use this age saving to, okay? Parameters are same, like text field only. There is no any difference. Now if I type something like ERTY, that is a text, okay? So it will give a validation to me. The value provided, not an integer. So it supports only integer value, okay? Then date field, okay? So if I want to input date, then I can use date field. So I have to just type DATG, something like that or whatever you know, and it will automatically give you the selection. So you don't need to remember the complete name of the particular component. So you can see here, this is date field, right? Where we can see it is MMDD YY format. And if I click inside this one, it will show me the calendar, okay? From where I can select the date, year or month, okay? All other parameters are same here as well, but it will, you know, that input types would like the parameter types would be date type, right? So if I'm creating one, like DOB, okay? So here I will take the input as date type, okay? So I will select date, and I can use the label.