 Okay, I think we can start going live. Hello everyone, I am Sanjay Gupta. I welcome you on Sanjay Gupta Tech School. So today we are having day 13 of this Appian Bootcamp and I have Ankit with me. Welcome Ankit on the channel. So Ankit will be delivering one more session on Appian and I hope those who are following the sessions, so you are finding these sessions interesting and if you need an instance or environment, so just share your request in the telegram group so that Ankit can help you to have the environment and you can do some practice. And if you want to receive timely notification, you can follow Sanjay Gupta Tech School YouTube channel, LinkedIn, Instagram and Telegram and session tracker link is available in the video's description. Okay, so with this I hand over Mike to Ankit. So Ankit will let you know a few more things and then you'll start with the session. Thank you. Thanks Sanjay sir. So if you want to watch any recorded sessions that we know, that is already we have done in like one to twelve sessions. So you can check it on the CodeMestro YouTube channel and there are other types of videos or other AP related videos so you can go through that also. And if you have any questions, any query, you can post on the CodeMestro's telegram channel and we will deliver back on that. So in our last sessions, we discussed about interfaces and expressions. Today we will discuss about process model. So process model is a very important and very powerful AP in feature. So first, what is process model? So generally, you know that as we discussed in our first session also like you know, every business has a process, right? So suppose I'm applying for a loan, so I have to fill the information, the loan information, then it will store into the database and it will go to the, you know, the approvers for approval. So the approver will do some checks like if every, you know, information is correct or not, if there is some issue in that information, then he can, he also can reject the request. So that is something like a process. So in APN, we represent this type of processes or this type of steps in a graphical manner, okay? That is process model. But process model is not only the represent graphical representation of a process of a business process, but it is in a executable form. So not only we can represent, but we can execute the process with the real time data, okay? And we can run the end to end workflow. So how it creates, I can show you. So similar to interface, other type of components, we will go to new and we'll take on process model, okay? And in this one, we can have, you know, a space between the words, okay? There's no need of underscore, like AP, get emperor details. Suppose I want user to input the information in a form. So we are saving to this folder. So like, you know, that interface, expressions rules, we save into rule type of folder, right? And documents, we save into document type of folder. So to save the process model, we create process model type of folder. Now, it has the security like AP user one, that is, that have the viewer security, AB administrator one, one have the administrator security that we can change, okay? We can have editor level of security, manager level of security, viewer level of security, initiator or deny. Now I will save this process. It will open in a process modeler. Okay, so this is process model, modeler where we create the process model. So in this one, you can see we have a start node and end node, okay? Like from here process will start and on this node process will be completed. So between two, these two nodes, we will configure our steps that we need to complete, okay? And we will connect, connect all of those nodes, all of those steps in the help of these lines. So now I'm removing this one, okay? First, you can see here we have file tab, okay? I can go to file tab, and I can configure the security again. If I want to update the security, I can update the security and there are other, you know, steps that we can use or other options that we can use, like save, save as, save as publish, version, start process for debug, print, preview, print, property and exit, okay? So we will, so like if I want to create new process model from here, I can use this one. If I want to open the process model, okay? In a particular, from a particular folder, I can use this. If I want to close, I can use this one in suppose in this particular process model or if there are multiple process models open, then I can use this closed or to close all of the process models. If I want to save the process model just to save but not to publish like the information will be saved, but those information won't be in executable form, okay? So we can use save if I want to create a different process model with, you know, clone like the same, then we can use save as if I want to publish, that means in that case, the information will be in executable form and it will create the new version. So in every case, know that whenever we do the save and publish, APN create a new version every time, like same as interface, in interface expression rule if I'm clicking on save every time, APN create the new version. So I can go to the older version and can check the code and can compare the code and I can revert also the code with the help of that. With the in the security, I can check the security and I can update the security. So it have different different levels of, you know, rights like process administrator have editor my manager viewer initiator and deny. Okay, so initiator is the lowest security level that have minimum security like an initiate the process viewer can initiate and can see the process manager have more security like and reassign the process editor can have more security than manager and then process administrator that I will share with you over the telegram group so that you can go through that. Okay, so like that this weekend, we have we can secure, you know, give the security to the process model. And now there are some properties right here, this is a property there. And you can see here, we have multiple types, like general type variables that process start form deadline alerts and data management. Okay, so first is general type. So in general time, you can see here this is process model ID. Okay, so process model ID is the unique ID in a particular environment. So suppose I am creating the I have created this process model on this environment, so it will be unique and there won't be any other process model with the same ID. Okay, every process model will have different ID. Okay, those that is process model ID. But if I deploy this particular process model on different environment, at the time process model ID will be changed. Okay. That means process model ID is unique, you know, in a same environment. But if we change the environment, process model ID will be different. Process model, you ID is the universal ID that will be same in, okay, in multiple environments. So if I'm deploying deploy this particular process model in other environment, that time also process model, you ID will be same process model ID might model ID will be changed, but process model, you ID won't change. Okay, process model link that is the name that we give to the process model okay, that where we create description is the same that we have given, but we can update from him. Then one process model display name, okay, so process display name. So you know that as you discuss process model is a blueprint, okay, or a template that define like what all manipulations on data, what all calculations on data will be there, what all nodes will be there, what all configurations will be there, but it is not a executed form. Okay, when we run the process with the particular data, then it create process instances, okay. So it, you can think like, like, suppose there is a class or there is, there is an employee, okay. So I'm asking to, you know, input the employee details and then performing some calculations on the data, storing into the database and then assigning some tasks to different different department, okay, so that is a process model that we configured. But that employee can be an employee can be anyone else, so everyone come and fill the information. So for each and every employee one instance run for a particular process model that we call process instance, okay. So this process display name in a dynamic name. That means suppose this particular process model is running for an case, so it will be different if it is running for other user like john. So in that case, it will be different. Okay, so process model display name is different, that we can define from here. Okay, we can concatenate some information here and we can create is a dynamic. Okay, like from here, we can define the process priority. It can be low, normal high. If, if suppose we are calling this process model from email that we will discuss later, but yeah, we can call process model from email. So we can get the attachments in a particular folder. Okay, so whatever I'm sending that attachment will be saved into particular folder that folder we can define here. If I want to take it from a public events, then I can click on this checkbox and this one define the time zone like if this process is running in ISP time zone or other time zone. Okay, but if I click on this checkbox, then it will override with the initiators time zone. Okay, so suppose if it is ISP, but the initiator of the process model is from other time zone, then it will override. So this is general type where we define some configuration. Now, same like interface is expression rule like an interface we create rule input right that is a variable global variable for a particular rule. Same like we create the variables in process model also, but here we call it as process variables. Okay, in interface expression rule we call it rule input. So same like interface we create the variable like by clicking here. Okay, and we can define the type like suppose I'm creating a name, it is text type parameter. If I configure it with parameter that means it will come from somewhere else. Okay, if I make it as required, that means process want to start until the value we have some values here. If it is array type or multiple type, then we click on this checkbox hidden like if I do not want to show the particular variable in the history. Okay, then I use the hidden I will show you how we can see the process history. Like this we create the variable we can create multiple num, okay, number of variables I want to create other variable I could click like this. So like this we create the variable. Process start form is the form like you know, suppose you know that in last lesson we created some interfaces. So if I want to configure that interface here, I have to use this process start form. Okay, so by I can browse from here and I can use you know, configure I can add that interface here. Okay. So from interface we can pass the variables into process model also that we will discuss. Now other tab is deadline. Okay, that we can use to define the deadline of the process model. Okay, that will display. So in this one, you can define the deadline as minutes and hours as the weeks or months. Okay, or you can define the particular date and time as well if you select this one. Okay, so like this, we define the deadline of the process model. This is alerts. Okay, so suppose any of the process know even I'm running some processes for the particular process model, and it break the somewhere build somewhere due to some reason, it might be security or anything else. Okay, so APN send an alerts in the design attempt. Okay, so that will go accordingly, you know, to this group or here we can define the group or if there is any constant of the group we can define. So it will go to the group users. Okay, that is defined here. Okay, so if I suppose if I define a user here, a group here, so it will come to the users of that group. It is not a best practice to define the user here. Okay, we should define groups only. Now, data management policies. Okay, so you can see here we have four options. Okay, one is like default, that is auto archive process seven days after completion or cancellation of the process. Second is archive process, and that we can define here seven eight nine and then delete and then do not automatically clean up processes. So that means support one process model is completed. Okay, a process instance is completed. So like sir, the process instance for employee information, and I submitted my information, and it is already written to the database, and everything is done for and process more process instance is completed. Now, the process, this management policies define like how many days after completion, it will be memory. Okay, so archival is like we are not permanently delete the process instance. Okay, but we are moving from its active memory to other memory. But and it can be refactor like you know that we can again, active that process instance, okay, with the help of some smart services. But if I'm using this delete process property, in that case, it will be completely deleted. Okay, from that API, and we cannot recover that. So that is delete. So if there's anything that we need to check after process completion, we generally we use, there is any like, you know that there is any user activity in that interface. So we use archival if there is any user activity, and process is simply not as much as useful to check the history, we use the deletion policy. So these are some properties. Okay, like general type, we have discussed variables, we can create from here. If there is any interface that we need to configure, we can configure from here. If we have defined the deadline of the process model, we can define and alerts, we can define from here alerts. And you don't know, these are important parameters, we have, we should configure that if I do not define the alerts. In that case, it will, you know, send the error message to everyone. And if I do not define this archival policy, like 15 or 20 days or something like that. So the process instance will be in memory till the date. And if there are a lot of process instances, then it will consume the memory. Okay, so like this, we define the properties. Now in left side, you can see here, we have some components, right? Like script task, call integration, user input task, encrypt PDF, script as a process and event, receive message, rules and message, or there are some gateways also and complex, like jure, right? And there are more, there are more like delete records, delete from data identity. So these all are components or nodes that we can use into the process model. Okay, so suppose I'm using script task, okay, if I want to use this node, between these two, you know, that start node and end node, I have to go to here and I connect with this line. So when I debug this process model, so when I will say when publish this, okay, and if I debug by clicking here. So now it is the instance of that process model. Okay, this is process model. And this is the instance of this particular process model. If I again debug, it will create new instance. So process model is same, but it is creating multiple instance, like you can see here, this is first instance, this is second instance. Okay, if I want to edit something in instance, I can open in edit process view, and I can change something. Okay. In that case, if I edit one particular process instance, it will pose the process instance. Okay, so once I change and, you know, save the changes at the time, I have to close this one so that it will again reach out. Okay, so this, this is process instance, and this is process model. Okay. So like this, we configure the nodes. So this is one type of node or component that we call a script task. Okay, other component is user input task. Okay, so these are script tasks and user input tasks. So some of the events or tasks can be done by APN itself. Okay, like if we need some data from database, so APN itself can test the data from database. Okay, if there is any manipulation needed, like I'm asking user to fill the details, okay, of salary and system is calculating the income tax. Okay, so in that case, we will use a script task, right, because user is just inputting the data of salary or, you know, the all of the income, but system will calculate the income tax. So that calculation will be in script task. So script task is a task that is completed by system itself. Okay, there is no any user involvement in this. So that for that purpose, we use the script task. So if there is any data calculation needed, or if then if we need to pass the data, if we have to perform some of the activities where user input is, you know, sorry, user, user requirement is not there. So we use the script task. So to check the property of this one, I have to click double click on this. And you can see we have similar general take here, where you can define the name, description, task display name is similar to the process display name process display name is also dynamic and task display name is also dynamic. So whenever an instance is running, so that every run will also at no creating new instance. So for that it will have the need. In data, we have input and output. Okay, so in input, we can define the variables, okay, and then output also. So in input, whatever we variables we are creating, these are local variables, okay, similar to interface. So these local variables we can use in this not only if I create a local variable in this script task, and I want to use that local variable in this node, I cannot. Okay, I can use process variable anywhere in the in this complete process model, but cannot use the local variable that local variable that we create from this new input, we call as activity class parameter. Okay, so if I'm creating suppose employee ID here, that is number integer, okay, I can use only in this particular node in input or output, but I cannot use in the different node. So in value, whatever value I want to assign to this employee ID, we use in value. Okay, if I'm in this one, this is a edit, you know, expression editor, where we can call the you know, expression rule as well. Okay, or we can do calculations like if I want to calculate something, I can do here like if I want to calculate eight plus nine or something, or dynamically, I can use this expression editor. And if suppose I'm calculating something so that calculated value will be stored, you know, will be stored in this activity class parameter. Okay, and that activity class parameters value I can save into process variable as well. Okay, so in saving to we use process variables. And in the name is the activity class parameters. Okay, this activity class parameters, we can use in output also. So input run when node, you know, start to execute and output run when node, you know, completed the execution. Okay, so it running start and it running end. And we can create multiple input also here. Okay, similarly, we can create multiple outputs also, okay, from here. So if I want to configure the output, I have to click, I have to click on this one, then it will come and I have to click here in this expression editor. And here also I can write, you know, any data calculations, or and data manipulation. So if I want to pass the data, then also I can use this like if I want to create code any of the rule, then I can call the rule from here. Okay, and I can pass the parameters. Same like we are calling the rule into interface, we can call the rule or into process model as well. And we can pass the process variable value or activity class value into the interface or expression rule. Okay, and we can save this into the process variable from here. So like this, we use the input and output. So in input, we create the activity class parameters, and we can calculate the data. And in output also, we can do some calculations or we can manipulate the data, we can pass the data and we can store into the particular process variable. If I want to delete a particular output, I have to select and click on this one. So like this, we use the script task. Okay. So in the script task, we do not configure any interface, but we define input or output to manipulate or calculate the data. Now, this is user input task. Okay, user input task, where we define the form. Okay, so we can call any of the interface that we created. Okay, and we can so we can pull that interface from in this form type. So in general, a general type is similar to other types or other nodes, like in name, we define the name of the particular node, like if I want to get the employee information, so I will give the employee information name. Okay, I give the description task display name is again it is a dynamic name. So we create is a dynamic. Okay. And then we define the task priority. And if I want to create a quick task, the task is the task that do not display into the task that you know that in our first day, we check the there was a tempo, right, interface and there was a task that so if I define this one as big task, this particular interface that I'm configuring here, okay, want display in on this task type. Okay, similarly input and output we define here. Okay, like if I want to create input, I can create input if I want to create output I can create from create the output from here. So suppose if I want to pass some variables value into the interface, okay, or if I want to get some values from user from the interface, so I create the input. Okay, so suppose there is an interface that have two variables employee name and employee ID or a variable of CDT type, then I will create that input of same type. Okay. And that input, we can pass through to the interface. So from here, we did, you know, we call that interface, right. So suppose it came like this is an interface, right, that we created last time. And if I want to call that interface, I can click on this directly. Okay, and I will click here on search. I will search and I will select. Okay, now I will keep on. Okay, and it will ask it is asking, do you want to automatically create not input or not inputs are activity class parameter local variables to match your interfaces input. Okay, so it will automatically create those activity class parameters. Okay, so on that interface, we have two rule inputs, right, selected country and button value. So it is automatically created the activity class parameters and configured here. So mapped also. Okay, so it was the text type entities also text type, it multiple selected country and button value is multiple a single type. So it automatically created the activity class parameters and map in the perspective field. So these value part that is right side is the activity class parameters and left side the interface parameters. If I check from here data, so you can see activity class parameter is all already created automatically created. And you can check that button value also. So button value is also automatically created. Now, if I want to save this particular value that user will input into a particular variable, I have to create that variable. So I can create the variable from process variable from here, or I can create from property there also right that we created last time. So from here also I can create the variable, like if I create the selected country, for connection, like this I can create. And I can use this one. So if I want to, because, suppose I want to use the user info info information into next node, I cannot use this AC, right? That's why I have to save this into process variable. Because process variable we can use anywhere. Okay, like this we save. Now there is one tab that is assignment tab. Okay, so if I want to assign the particular interface to someone like suppose, there is a prover, okay, a prover interface and a prover interface I want to assign to the line managers group. Okay, so I will use that if I want to assign to the user who is initiating this, I will I have to use there is one function process initiator. Okay, so if I use this process initiator in that case, it will assign the task to the user who is running the initiating the process. Okay, now I can go and I can save and publish. There is one error. I think that there is an interface. Okay, so if I go and check the interface, this one, if I simply configure this section on this button one, I can save this value into rule input, like selected. We do not have any variable for this question, but we have variable for country. So I can use this one. So now, and this one, I can make it as not required. In this one value, I can use selected country or isolated country. Okay, and in saving towards them, I can do the same. So we are using this local because we do not have any local even now. So I can simply remove this. There are some error interface that we will check. And I can configure the new interface also. So now I will open this one. So that this is interface. Now I will create an interface user details. Okay, so like, similar to other interviews, I am creating this one, it will create an interface. It interface for me. Suppose I'm creating the same variable here, that selected country. Okay, and text type, it is multiple type. Because in process model, we create multiple type and button value, that is also text to it like this. And in this, I can have one drop down label countries, in choice values, I can put two countries. Secondly, choice levels, right? In value, I can use this variable, I selected country. And in saving towards them, I can use I selected country. Okay, now you can check its type. Those are but where you are null, and India is working. So I can have the test. Okay, this one, I can have it. And I can define that placeholder, like select a value. Now, if I select this one, it will have the value of 20. And like this interface, I want to go into the process model, I have to go here. Okay. And I can clear this one. I can go to search. And I have to just put this one. Okay, and we'll select this one. So now it is again asking me to create the variables. Okay, so I can select this one. But this is multiple type, right? Last time it was multiple type. That's why it is not coming into the choice. Okay. Now, this is single type. And if I select, you can see now it is here. Okay. And this process variable is also multiple type, right? So this one also, I have to change that single type. Okay, so it is automatically single. Now, if I publish this one, so there is some error. I think the error might be in the name that you defined, right, in the display name or somewhere. Okay, so like this, you know, there are some error coming. So, but once it is saved, okay, like this, so you can see here, it is saved, right? And it is defining the error that ample information at output input expression. But, you know, one, to debug this one, I can go to this file, and I can debug. Okay. And once I have, I debug this one, I, I can ask you to fill the information. Okay, so like this, we define the user input task. There are some events also here. Okay, like a start event and event. Okay, so these are events. Okay, like this, we have other events also that we will discuss in later sessions, or I will give you the link of the documentation. There are some gateways, okay, that we will generally use. Okay, so like this is absorb gateway, this is or and and complex, right? So these are four gateways. So absorb will use most of the time. So in absorb, we will have like, there will be one input and multiple output, but at the time only one output nor, you know, path will be executed. So suppose there are some conditions, okay, on basis of conditions, I want to go to different different parts. So like I can say, after submission, okay, after this interface, I put if I put this XOR, okay, and an example. Okay, like this, if I want to write the data only in case of user submit the form, okay, if users simply fill the information and cancel the form, at the time, I do not want to store the data into database. Okay, so it's depend on the choice, right? Whatever you just, you know, choice, take the choice on the interface. So in this one, we define the conditions here, like if the button value is submit, then it will go to write, if the button reaction value is not submit or anything else, then it will go to n node. So if first condition is true, okay, it won't check the second condition, okay, and it will execute that path. So in this one, at a time, only one output path will be active. If this condition is false, then it will go to the second condition. And if this is also false, then it will go to the last one. But if any of the condition is true, it will execute that path. In OR, it check all of the conditions. So suppose there are three conditions, so it checks all of the conditions. So if this is correct, it will go to this path, then it will take this path also. Second one, if this is correct, then it will go to this path also. So it will execute the multiple path, okay, wherever the conditions output is true. And it's like, it have multiple inputs, input path. Okay, so suppose there are two input path coming from to this particular one, like one from here, one from, I can just take the example, like one from here, and other from here. Okay, so there are two input path coming to this one, one from here, and other from here. We do not define any parameter in this end and gateway. Okay, so if these two paths are coming to here, okay, this end, so it will only completed when both of these paths are on this node. Okay, so suppose this path is executed on this end node, but this path is not on the end, so it won't run further. Okay, it won't go to the next node. It will be on end only. So, and gateway hold the process until all of the path, all of the parts which are configured are completed. Complex in complex we can have multiple condition at same time. Okay, like if I want to execute only one outgoing path, if I want to do one or more outgoing path, okay, or require some you know, incoming parts, okay, like suppose I want to configure that there are three input path, but I want only two input parts, okay, required to be, then I can configure like this. Okay, so these are gateways that we will use to put the condition or to divert the path. We already checked like how we can save the process model, we can save from here, but it won't create a new version, it will just save the information. Okay, but if I'm clicking on save one public, then it will save into the executable form and it will create the new version. If I want to load the older version, I have to just click on here. Okay, and I can see all of the older version have here, I can click any of the version, any of the version and I can click on load. Okay, so it will load the older version of the particular process model. Okay, smart services are like, you know, that these are smart services, or we can say process model, these are like redefined, okay, like functions, in interface, we use the functions, right, so in process model, we call functions as a smart service, okay, that is defined, you know, designed with the help of plugins. So if I want to delete some records, I can use this smart service, if I want to query into database, I can use this one. So similarly, we have a lot of smart services, some smart services like out of the boxes, smart services that we can say out of the box functions, that if you directly provide and some are customized, okay, smart service or design advice, you know, a particular organization, okay, so that is customized. So we will use these smart services whenever we have requirement, okay, like if I want to write the database, write the data into database, I will use this right to data store entity, there are other purpose like if I want to create some document, I want to send the email, I will use this one. So similarly, there are multiple smart services for different, different purpose, okay. So these smart services, you can go through one by one. But first, we have we should learn about all of the properties that process model have, how we can configure this script task, how we can configure the user input task, and how we can define the other properties. So like this, we have should learn first. So today, we covered another basics of process model, okay, like in high level, what is process model? And we did, we discussed about some property, some events, some gateway script tasks, okay, user input, how we can take the input from user that we discussed how we can configure the interface to the process model, how we can put the conditions, okay, the whole things we will discuss, we will continue on process model tomorrow, like we will configure a particular interface and we will store the data into database, okay, with the help of process model, so that we will configure tomorrow. But if you want an instance for practice, you can fill the details on this Google form or you can put the comment on Telegram channel as well. If you have any other question or any other query you can put on Telegram channel and in this email as well, that is training the code master.com. So thank you. I want to hand over to Sanjay sir. Yeah, thank you, Ankit, for sharing all the knowledge. And I think it was quite interesting because I was able to see some pictorial representation, I was able to relate Salesforce, because in Salesforce, also we have flows where we implement some processes. So yeah, so it is interesting. And if guys will be doing some practice, so I think they will be able to learn more. And tomorrow I think you will be covering more examples. Yes. Yeah. Okay, thank you everyone. So those who have joined live, thank you. And those who are watching the recording, thanks to you as well. So please share your feedback about the bootcamp. And thank you, Ankit, for sharing all the knowledge. Okay, so ending the session. Thank you, everyone.