 Hello everyone. I am Sanjay Gupta. I welcome you on Sanjay Gupta Tech School. Today we are having day 8 of Appian Bootcamp and I have Ankit with me. So welcome Ankit on the platform. So Ankit will be sharing some more insight about Appian today and he will be sharing some update about instance as well. So before handing over to Ankit, I just want to share one thing with you. So if you want to receive all the session reminders, so just follow Sanjay Gupta Tech School on YouTube, LinkedIn, Instagram and Telegram and the session tracker link is available in the description of this screen. Okay. So with this, I just want to hand over to Ankit so that he can share some more insight about Appian. Over to you, Ankit. Thank you. So you can find that all the recorded sessions on the PodMestro YouTube channel as well. With that all recordings, you will get some other knowledge settings as well. If you have any query, you can put on the PodMestros Telegram channel and we will reply back on that. If you already have the instance with it, then also you can put that in the PodMestros Telegram channel. So we will know that you already have the instance and we do not need to apply for that. Yesterday, we learned about Appian expression rules. So today also we will continue that. So yesterday, we learned about some of the Appian functions. So today we will learn more functions and I already shared with you that sheet or another Appian documentation from that you can go through and check all the functions. Okay. But some of the important functions we can cover in this session. So you can see here, first function that is LEN, that is LEN function. Okay. One second. So we have this expression rule on which we have you practicing yesterday. So if I type LEN, it automatically come in here. So you can see here the documentation of this particular function. So this one returns the length in the character of text. Okay. So suppose I am putting one text string, so it will return the length of the character. Okay. So suppose I am typing here, okay. So it will return the number of characters in this particular one. Right? So one, two, three, four, five. If I am typing NKIT, so it will return four. So this is the length of string. Suppose I want to get the length of a particular array, then we have one function that is length. So now there is an array. Array we write in parallel braces in Appian. So here you can see we have two, right? Two element in that particular array. So it will return two. Okay. So this is return the number of elements in particular array. There is one more function to return the length of an array that is count function. Okay. So it also returns integer. So this is to count or to get the count of an array elements or if we use LEN function, then it will return the size of the text. Okay. So it will return five. So it will return the characters in the particular array. So that is five. And other function that is split. Okay. So if I type split, you can see that documentation here that split will, you know, split text into a list of text elements. So if there is a single string, okay, a single text string and or any other type of string. And if you want to, you know, divide that in multiple sub strings, then we use split. So suppose there is a string like a n, pi, a i, pi, b, okay. And now this is a single string, right? Now I want to split this into with the help of five, right? We have one separator five here. If I will use the same separator and it will create three parts. Okay. So it divided the single string into three different parts. So these are three different sub strings. So split we use to split out that particular text string. So this is the split. So split is like, you can say, you know, the reverse function or the opposite function of join array. Join array, we use to join multiple array and array maps and split we use to split the single string into the array. Then there is one function that is user. So this one user, it will have one more function that is logged in user. You can see. So if I type logged in user here, so you can see the document, return the current user logged in to the application. So now my user is logged in. So if I type, it is written my user name and my full name. Okay. So this function logged in is a function written the user name and the user full name who is logged in on the particular system. Then user function. So in user function you can see user name and property. Okay. And properties are multiple that you can see here in documentation. I can get first name, real name, split name, supervisor name, title, email, phone application, other properties of a particular user. So now suppose I want to pass my first name. So this is my username, right? That is required here that is first parameter and second is property. So if I want to fetch first name, then what I will type here, I can copy from here first name. Now you can see this is my first name. If I want to fetch my last name, that also I can fetch. Okay. So this is my last name. In life, we have function for group. Okay. So if I want to fetch the property of user, I will use user function. If I want to fetch the property of group, then I will use group function. So in the group function, the first parameter is group ID and second is property. And what property we can use here, like created by create, like created on creator who created the group, group name, group type name, last modified parent group name or delegated creation, description ID, membership policy. Okay. So whatever parameters are here, we can pass it out. Right? So suppose I want to pass for a particular group. I can have multiple groups here, right? So this is one of the group. And I want to pass its property. So I will use its ID. Okay. That is 586. So here you can see we need group ID. So I will type this 586 here and property. I will use one of the property. So if I use group name, I can use. Okay. So whatever property you will put in double quotes. So here you can see we have group name. If we want to check the membership policy name, I have to just copy this one. I will paste it here in between this double quotes. And it will return the membership policy that is closed. Okay. So whatever policy I need for this particular group, I can pass in the help of group function. Same like this, we have other function that is today. Okay. So if I type use today function here, it will return me the date of today. Okay. That is third of hours. If I want to pass date and time, okay, current date and time, then I will use now function. Okay. So now you can see we have date and time. And you can see here we do not have any parameter for this particular function, right? But today also we do not have any parameter. We can simply type and it will return the result. Okay. And it is returning the result into the, you know, my user's time zone, log user's time zone. Now we have other function that is contents. Okay. What is the use of content function that you can check here? Check whether an array contains the value or not. Okay. So we will check and, you know, value in a particular array. So first parameter is array and second is value. So suppose here we have 467. Okay. This is an array and I am searching for here. Okay. So it will return true, right? Because this particular value or it exists in this array. Okay. That's why it is returning true. If I'm searching five, five is not part of this array, right? That's so it should return false. Okay. So you can see here it is written in false. So contents function check if the particular value exists in that array or not. If it exists, then it will return true. If it does not exist, it returns false. Then repeat function. Okay. Suppose if I want to repeat a value, I will use repeat function. So here you can see times and input. Okay. Like how many times I want to repeat a particular value and what value I want to repeat. So suppose I want to repeat value abc. Okay. And how many times three times. So it will return abc three times. Okay. If I increase this one, it will return that time. So now it will return five times. Okay. So like this we use repeat function. So documentation you can check from here as well. Okay. Like written in list with the specified number of items. For example, repeat two comma hello returns hello two times. Right. So because it's time is two and hello is a string then reject function. Suppose if you want to reject something from an array, you will use reject function. Okay. So in this one, you can see here that reject function is null. That means it is returning null from an array. Okay. So like this, if I want to this is an array one comma four comma null, I can say nine. Okay. And I'm going to repeat this one. So now you can see we initially we had four parameters, sorry, four elements in that particular one, one, four, null and nine, and it removed null. Okay. Now we have only three words, one, four and nine. Now you can see we have one more. So that is removed. Okay. And you can see here, remove the value at a given index from the given area. Okay. So suppose we have an array like he, so this is an array of three elements. If I want to remove the value at index two, okay, that indeed I will type here. Okay. That is second parameter. And now you can see we have E and N only D is removed because that was the second thing. If I type three, then it will remove third one. Now we have E and D and suppose if I type four before this index does not exist in this array, right? So it will give me the error. That fourth index does not exist. And I'm trying to remove that. Now where? Okay. So you can see here in the description of this one written the index where the value in the input array are true. Okay. So wherever we have true value, it will return the index for that particular one. So suppose I'm having an array true, four, four, two. So here you can see we have two at two places, one and four, right? So it will return one and four. Okay. So it returned the value indexes where in value is true. So these are some important functions, but you can practice on other functions, okay, from the documentation that I've already shared with you. Now next is nested functions. So we can use functions, okay, inside other functions as well like, you know, that just now we tried one function that is user, right? And in user we fetched first name, right? So here this is my first name and same like that we fetched last name as well, right? Okay. So same like that I fetched last name. Now if I want to concatenate my first name and last name, I will use concat function. Okay. So now concat functions have all of the strings that we need to, okay, concatenate. Now we have two. So it will concatenate like this. So here you can see demo and user both are coming. Now if I want, you know, space between my first name and last name, I will add one more to here. Okay. And that, this is simple space, right? And now you can see it is returning my full name. So here we are using three functions, right? First is logged in user, logged in user we are using in a user function and user function we are using in concat function. Okay. So like this we can use functions inside other functions as well, okay, wherever you require it. So this is nested function. Next is casting functions, okay. So sometimes we need to cast the value into a type. So suppose I want to cast some value into integer, I can do like this. So if I am using like one, okay, Oman two. So this is in string, right? Because it is coming in double quotes. So whatever is coming in double quotes, that will be in string. Now if I want to cast into integer, I will use two integer, okay. And it will cast. So you can see here list of number integer. Like this we have other functions like two string to cast into string to uniform string to cast into area of string, okay. So like this we have multiple casting functions that you can read from the documentation, okay. But it will work like this. Now is custom data type variable, okay. So in our last session we read about, you know, a custom data type, right? So custom data type because generally called a CDT, okay. So we can create the variable of CDT type also, okay. So now we have like number integer text type. So same like that we can create a variable of CDT type, okay, custom data. So I can use the variable value like employer, okay, that is variable name. I can add the description from here then type. So you know, we have one CDT that we created and filter out with data type filter, okay. And we create it like employer details, okay. So I can simply type you and it will return me, okay. So now we have one variable that is this particular CDT type, okay, AB emperor details. So like this we can define, okay, declare the value of a CDT type of variable, okay. If I want to create this as multiple type, then I have to just sleep on this checkbox. So in that case it will be an array. Like if I want to pass a particular field from a CDT type then how I can use. So suppose first I can, I have to define the value, okay. So you can see we have one type function, okay, to type cast into a particular CDT. So what is the CDT name, AB employer details, right. And you can see here it all, you know, has all the building, like employee ID, company ID, employee name and other fields as well. So it has three fields only. So it returns all three fields, okay. Now if I want to set the particular value for employee name in test for testing purpose, okay, because this is, this box is for ad hoc testing, okay. So I can just simply type double quotes, okay, company ID, I can copy as 1, 2, 3, something like that, okay. So like that you can define the value. And now you can see in this box it is automatically coming. Employee ID we did not set, that's why it is coming null, company ID we set is 12 from here. So it is coming, employee name is coming, like this. Now suppose I want to fetch a particular one, okay, particular field from this particular, you know, array from this dictionary, sorry, not array from the city, so if I want to fetch a particular field, I will just type employee, okay, and dot notation. And now you can see it is returning all three fields, company ID, employee ID and employee name. Suppose I want employee name, so I will select this one, okay. So we use dot notation to fetch a particular field from a CDT. So now you can see it is returning, okay. If I want to fetch company ID, then I have to dash type this and it will return company ID to me, okay. So you can see here we have value 12. So lively we fetched a particular field from a CD type of variable. So same thing we can do with function index as well, okay, that we just now read. So in index function, we have one parameter that is data, okay. Second parameter is index and third is default. So yesterday we, you know, learn a particular use case of index function, that was this first use case where suppose this is an array and I want to fetch a particular index value from this array like second index value it will return, okay. Now you can see here we have b. So this function we can use for to get the particular field name from a dictionary structure also, okay. So suppose we have one variable, okay, that is m to it and I want to fetch first name, okay, sorry, employee name, same like we use dot notation. So for that I can use like this also. So I have to just put employee name in double quotes, okay, and it will return employee name, okay. So this is second use case of index function and sometimes like, you know, that RI employee might be null, okay, and in that case it might break. So for that we can use the default value also, like in this one, I'm using null. So if RI employee null, it will return null. So this is the use of index function and like this, we can fetch a particular field from a CDQ, okay. Now, you know that our yesterday's as an, we learn about lock rule inputs, right. So rule inputs, we, you know, all of these parameters that we created are rule inputs. So rule inputs are like a global variable for a particular expression rule, okay. So this rule input I can use anywhere in that, in this expression rule, okay. But local variables are like a block variable, okay, that we can use in a particular block only. I cannot pass this, you know, I cannot use this particular, you know, a local variable in outside of the block, okay. So wherever we are declaring, we can use in that block only. So how we, you know, create a local variable. So for local variable creation, we use one function that is a block function, we can say that we use to create a block, okay, and that is a local variable, okay. And in that one, we create a local. So for that local variable, we use this keyword local, bang, and then we can give the name, like I'm giving number, okay. So like this, we declare the particular variable, okay, local variable, like that I can create one more local variable, okay. So like this we create, and if you want to assign some value also in this local variable, you can give that this, okay. So colon and then the particular value. If we do not give any value, it have, it will have null value, okay. So suppose I want the result of this one. So like this, we use the result, okay, for a particular expression or particular block. So this block is starting from first line and completing to fifth line, right. So these two locals, we have defined here, okay. So these are, you know, locals are declared and defined. And now this fourth line, we are getting the result from this particular expression, okay. So you can see here, we have value one, because it's declared value is one, okay. And local, if I print local d, because local d is, you know, initialized value is null, because we did not initialize it. So it is null, okay. So like this, we can, you know, define the local variable. Now we have some expressed behavior of local variable, okay. One is never repress, then never repress even when dependencies change. Repress when a specific variables in, repress on a timer, repress after every user interaction, and repress after record action event complete, okay. So suppose I'm calling something here in this local variable, like I can say, we, I'm calling other, okay, other ruling might be ABC. And I'm passing one rule input here, okay. That rule input, I can say numbering, okay. I'm passing in this other expression rule. And so this number C value is coming from this expression, right. And this expression is executing on behalf, on basis of RI numbering. So if the value, okay. So if it is never repress, that means once this page load, it will execute, okay, this expression. And this expression's result will be stored into this number C local variable, okay. Like this it will work. But if, and if I use repress when a specific variable change, that means I have to put a variable name on basis of that, that particular local, you know, this rule will again execute and will update the value of number C, okay. Repress on a timer, okay. So if I want to repress a particular expression or re-execute a particular expression in a given timeline, like in every 30 seconds, every one minute, every two minutes, then I use this repress on timer. Repress after every user interaction. So in that one, you know, whatever user is taking the actions, like if I'm clicking on a button, if I'm typing something, I'm, you know, submitting a form, okay, in every case, it will execute, okay. It does not require to update a value, but it will run every time whenever a user is taking an action, okay. Repress after a record action event complete, okay. So record we will, you know, learn in our next sessions, but record have some actions, exemptions like a form or something, okay. So what whenever there is an action repress, okay. So it will execute that particular expression again. So this have some different type of, you know, syntax as well to define the particular variable, okay. So like if I set the property of this one, okay. So you can see if we have a multiple property value, it will always repress, okay. Whenever user is taking any action, repress interval, like, you know, it will repressing every 30 seconds, every one minute, every two minutes, okay. So every defined interval. So if I give value, like I can say r i number eight, okay. And if I use repress always, it will always repress or always execute if I put like this, okay. If I have used repress interval, in that case, I have to give a time, like, if I want in every 30 seconds or in every minute, okay. So I will give that. So suppose I want to run in every minute, I will give one. If I want to execute this in every 30 seconds, I can, I cannot give less than 30 seconds, okay. This is minimum. Like that we have repress on reference variable change, okay. So if I have that true, like you can see here, the reference variable is r i number eight, right. So whenever r i number eight will change, this expression will again and again execute, okay. So suppose the r i number is updating due to some user action or something, you know, so it will execute this particular expression again. Now repress on variable change, okay. In that one, we can set a particular, we can, you know, give the particular variable on basis of the change of that particular variable, it will update. So you can see here, I repress the value of local variable each time any of these specific variables change. This allow you to repress the value when a variable that is not referenced within the value parameter is updated. You can define either a single variable, okay, like local variable one or multiple variables also in curly braces, okay. So you can simply define here number, like if I want to update this one on number b, okay, r i number b, I can use that. So its reference variable is number a, right, not number b. But if I give this reference on variable change number b, then it will again execute once this variable value change, okay. Then we have repress after, repress after we use for record actions, okay. So whenever there it is updating, you know, record actions, so we use that for that. So suppose if I put record action, so whenever a record action is completed, it will execute this particular expression again and will save the value of that, you know, expressions result into this variable, okay, local variable. So like this, we, you know, declare a local variable in an expression rule and we execute that those, okay, and we can define local variables value at the same time when we are declaring or we can, you know, have it in null also and in like in some of the expressions wherever user is taking actions, at the time also we can update the local variables value, okay. So these are local variables that we can, so now we know about rule inputs and local variables both that rule inputs are like a global variable for an expression rule and local variables are like a block, block variables, okay. So this was all about expression rules, okay, next session we will learn about new, you know, other components of the features. So now we have community access, okay, so who were requested for the community addition, like instance of APN for practice purpose, okay, we will share that by this week, okay, so you can do the practice on that, okay, you can read, you know, check the all the videos from start and you can do the practices, okay, or all of the recorded sessions and if you, if any of, you know, any of you who does not create a request or raise the request for environment access just go, you know, open the seat that is mentioned in the description and the session tracker as well and fill the details, okay, so that we can provide you the community environment access, okay, and if you already have and you already requested for the environment and you already have, then you can, you know, put that on our telegram chat, okay, so that we will know that you already have and you are doing the practice. If you have any query in this session, so you can ask now also, but if you are, you know, watching the recording and if you have the queries after this session, so you can simply put your query on our telegram group that is the code mesh too and you can ask the person on this email ID as well, like trading at the code mesh.com and we will rework back on that, so thanks for today and I want to hand over to Sanjay sir now. Okay, so thank you so much Ankit for sharing all the insight and I think once people will be having the instance, so they can start practice and Appian will become very well interesting for them, so maybe by the end of this week, like those who have requested, they will receive the email, so that is good and those who are following this bootcamp, please share review or feedback, so this is it for today and I think next session we'll be having next week, right? Yeah. Okay, so till then, thank you so much for those who joined live and if you are watching the recording, thank you so much for watching and following the bootcamp and thank you Ankit once again for sharing the knowledge. Thank you. Thank you everyone. See you next week.