 I am Arpan Gupta from BIT Meshra and I am Prateek Goyal from IIT BHU Varanasi. Our project is NG Burjai, a rule-based access control system. Now RBAC. RBAC stands for rule-based access control. Rule-based access control is a system designed for developing a dynamic generation of forms and applying custom validations to those dynamically generated forms. But the question arises, why RBAC? The answer lies in the following key points. Firstly, to avoid writing even a single line of code. Then, to reduce the development time of software to a great extent. Then, minimizing the generation of errors. As we do not require a user to write any line of code, so generation of errors, be it logical or syntactical, it's very less. Last point is interface-based rapid software development. These are the key points behind the motivation of RBAC. Now, let me tell you about the features of RBAC. Dynamic form generation. Then, special custom validations. Then, multiple validations on single field. Then, rule sequencer for ordering of various rules. Then, formula builder for generating formula. Then, validations on related tables. Then, creating user-defined constants. Now, I will explain you these features in detail. Dynamic form generation. The first feature of RBAC is dynamic form generation. Through RBAC, you can create dynamic forms. And along with these dynamic form generation, RBAC will automatically create tables for you in the database. Then, provision for creation, updation, deletion, and these kind of viewing of these forms is already provided in the RBAC system. Thus, the main point behind all of this is, it's a code-free database management. Code-free form generation. Now, Pratik will explain you the rest of the features. So, this is our main area of concern. Spatial validation. So, first of all, let me tell you what is the difference between standard and spatial validation. So, basically, standard validations are those validations which are generated by database. By means, like, a particular field should be a wire care or integer. These are the standard validations. And the spatial validations are those which are generated on the fly based on the specific condition. Like, if a user wants entering a particular field, then based on that field, he can use a particular value. Like, if he's entering an age, then he can specify that age should be greater than 18. Then age greater than 18 will be the spatial validation applied to it. In this RBAC, we have included the various types of validations which are string, numeric, date, time, etc. And also, RBAC has a feature of multiple validations. Like, user can include two or more validations also. Next important topic is formula builder. The formula builder that we have built is used to create formula. And once the formula has been created, it gets stored in the database. And whenever the user is entering the form and he clicks on that field automatically, the field gets automatically the value of that field comes. So, like, you can also calculate from this area, total balance, interest on loan, etc. Another feature in formula builder is constants. User can define its own constant, own user defined constants. And we have provided a simple UI for constant creation. Like, user can specify their value of pi, 3.14, and it gets stored in the database, and it's like a one-time job. So, whenever constant user wants to change the constant, then automatically the formula gets changed. Next important feature is relation tables. So, we have included a feature that, suppose consider case, if a user wants that a value should be validated from a set of related tables. So, RBSC provides you this feature, like, in which the value has been fast from a different set of tables. Also, the special validations can also be validated through related tables. The formula builder which we have built can also be computed from related tables. Like, we have entities in formula builder, so various entities can come from the set of related tables. Also, multiple validation can also be applied in the relation databases. Next is the rule engine interface. This is the UI of the RBSC. We have provided a single interface for both the creation of rules and formula. So, it is like an interactive interface for various related tables. Just you have to click on the table and its related table comes and so on. So, it is quite a user friendly. So, another case arises, like, we have a set of multiple validations on a particular field and user want to prioritize some rules. So, we have a feature of rule sequencer in the RBSC in which user can reorder the rules and after the reordering, it gets saved into a database and the rules are processed in that specified order only. So, these are the technologies which are involved in RBSC. For the backend, we have used PHP, MySQL and YF framework and for front-end, we have used JavaScript, jQuery, Ajax and HTML5. So, now we would like to show us our demo. Now we will show you, firstly, how dynamic forms can be generated through RBSC system. We will click on create new form. Here we will specify a name, say student. This is the form name. Now if we click on create, a form will be generated and the table for it will also be generated in the database automatically. Now we don't have time to show you how these fields are generated. We have already generated some forms and we will show you how special validations work. Firstly, we will show you this customer form. Let's open the customer form. We have already created some fields for customer forms. Here, let's just focus on age field first. We will put some validation on age field. We will like to apply validation like age should be greater than 18 and age should be less than 60. We will first create these two rules and then we will apply these rules on this particular column. This is our rule table interface and we will firstly create these rules. Here we will specify the name of the rule. Age should be greater than 18. Now we will select the category that's numeric. We will select the condition that is greater than and we will select the value 18. Now the rule has been created. Now we will create another rule that we propose that age should be less than 60. We will again create 60. Now these rules have been created. Now we have to apply these rules to the particular field that we have chosen. That is the age field. Now we will click on edit rule and we will select the rules that we want to apply. That is age greater than 18 and age less than 60. Now if we apply these rules, these rules have been set on this particular field. Now let's try to enter anything into the form. Firstly, write any name. Now write an age less than 18. Now if we try to add this form, I mean it will show age should be greater than 18. Now write something greater than 60. Now if we try to add, it will show age should be less than 60. It will only accept if it is between 18 and 60. Now it will accept. Now we will focus on our relational table. Now we have already created relation between three tables. We didn't have time to show you that how relations can be created. We will show you these are three tables, ATM, customer and bank. Customer is related to ATM. ATM is related to bank. Firstly, we will show what fields we have created in bank. Open the bank table. Yes. Here we have created two fields. Savings balance and current balance. And we have also put an entry into it. Savings balance for 1000 rupees and current balance for 500. Then in ATM also, there is a single field. That's account number. This is relating customer table to the bank table. Now what we will do? What do we exactly want? We want that here in customer table, there are two fields. This pin number is the field that is relating customer table to the ATM table. Now what we want? Total balance should get the value of savings balance plus current balance. So it will calculate the formula from the relational table. And in for withdrawal balance, we want that withdrawal amount should be less than current balance. So we will apply these two. We will firstly create these two rules and we will apply those here. Now go to the rule table. Create rule table. Now we will give any name like total balance. We will select the category. That is formula. We will select the table. Customer. Customer. Customer. Yes. Now you can see the related table has automatically appeared. We can click on it again. The related table will appear. It is a very user friendly UI that we have created. And we will select the field we want. Now we will add the field. We will select the operator we want. Click on plus. Now we will click on create and the particular... Go back to that column name. Yes please. Go to column name. I want to select something else. Okay. You can do that. There only. Go to the column name. Click on... I will click on... Yes. Create it by... Actually... Okay. You can do that. Select create it. Add it. Okay. Perfect. Now create the... Now you want to apply this rule. You can go. Apply this rule to that. Now apply this particular... formula. Total balance. Yes. Now okay. If you want that. We will try to enter into this field. Yes click on entry. Enter into the... Enter the values. Put something between 18 and 60. Now pin number 1. This is because this is related to the next table. And we have created an entry for 1. Now total balance. You want that it should appear. Here it is appear. 1000 plus 1 is the created by. Created by... The value is 1. That is automatically generated. That is... Okay. Which is non-numeric. Non-numeric. What we have done... We have tried to show you that this kind of... This kind of concept can be implemented. You can create formulas. You can create... The formulas can be created from relational table as well. Not only from the same table. I understand. My question is... Yes. What will happen if I select a non-numeric field and select a numeric operator. What does your system do? My system will most probably not generate anything over here. That is what I want to see. Not generate anything over here is acceptable. What is needed is... When are you catching the error? If any. And how you are displaying the error to the user. Okay. That is actually the broad question. Actually... I don't see you saying anything about error. In your system... Because our main focus on concept... I mean we had to implement this formula builder. We used the normal static fields. And we used it to the... But in a formula builder... We used it to the relational table. I mean we extended it to the relational table as well. I understand what you have done. What I am saying is... Can I write an expression evaluator which will co-dump? Okay. Co-dump is never acceptable. Okay. Since you have done so much work, it is absolutely essential according to me. And I should not be allowed to give a non-numeric operation on a non-numeric field. So you can either spot it during creation best. Say the field is not applicable. If you don't spot it during creation, or sorry, I take it back. Even after spotting it during creation, you have to spot it during application. Okay. Can I apply the rule? Even if you have failed in doing that additional check. Okay. When at the time when something comes, you cannot co-dump when I start going to the table, retrieving an entry, doing an ad operation, and suddenly I get some stupid thing 404, 405, whatever on the screen. Okay. What I wanted to point out is you have to do the checks three times. I am not saying do it once. Okay. Even if you are writing a piece of software internally, okay, when you divide it into modules, you have got three things. Specification, application, and execution. Okay. All of you have done the same thing. But still, as a part of module design, each module has to do error checking. Maybe it is duplicate. It doesn't matter. Okay. Because each module has to be reusable. If somebody else uses it, gives you wrong data, it will fail. Okay. The assumption that I have done it, one system is taking input from second system, so the second system should not check the input is all wrong. Every system has to check its inputs. The standard philosophy. Now, we will show you another table that we have created. Area of figures. Let's go to the forms. Now, if you are giving a special concept, it is okay. Okay. Okay. Yeah. These are concepts. Yeah, we have almost covered everything here. Just you want to show the constant. No, that's okay. Yeah, prioritization also we can do. We can do rule sequencer through prioritization. We can prioritize the rules which rule you want to check first. That also can be done. This is here. Okay. Give an example. Give an example. I mean, you can do like... When this feature you are implementing is usable in real life. Simple feature. You have been using your image processing and everything. You will be drawing your canvas on canvas. You will be drawing your circle and all. Firstly, you would like to check that this particular circle doesn't exceed that canvas width. I mean, it is coming in between that canvas. I am looking for an example where the order is important. I am telling you. This is one rule that you will apply. That it should not exceed that canvas. Firstly, you need to check this. Then only your special evaluation would come. It should be greater than 5. The radius should be greater than 5 or something else. Wrong example. I can apply it simultaneously. No, you can apply simultaneously. I can apply it in any order. Definitely, you will apply it in any order. But firstly, you will check that if it is exceeding the canvas that you don't need to check whether it is... You don't want to apply that. You are giving me an example where an order gives me an advantage in time. Yes. Give me an example where an order is important. I will not do without it. Consider girls competition is going on. Girls competition is going on. An entry is coming. First of all, we have to validate. There are two rules. She should be female. One rule and another rule is that maybe the age should be greater than 18. First of all... Again a wrong example. An order. Anyway, it doesn't matter. The reason I wanted to bring it out is doing features is important. No doubt about it. But when you are developing at the bottom level you should have an idea of applicability. You should have been able to answer this question. Actually, our main aim was to optimize. Basically, we are talking about if you do it in vent charts there is an intersection. If I do it both ways it will give me wrong result. What you are talking about is C-app optimization. If you do this first then this is not necessary. That is not the reason. There are cases where it will fail. All right? Good. I have another question. I just want to show the sequence. No. You are done. Good job. People who work with me are aware. Whether you do a good job or not I always will ask questions. One of the things which I have written is what will happen if I do a mistake in specs? Yes sir. I do a mistake in specs. Special in crude. Since you are giving crude. Should delete be part of it? I mean this is for software development. User can and you can even give rights as well. What kind of operation you want to give to what kind of user? That also can be done. You can even specify what kind of access you want to give to what kind of user. This can be done. Definitely this can be done. It should have been part of your system because deletes are almost never allowed. Okay. Because anytime during at the system specification stage since I am not writing any code. If I give a wrong specification I have actually written wrong code. And which may cause chaos. Okay. Because there is no testing. When you do something automatic the fundamental thing is testing goes down. If I develop it manually I have got this one guy called Praveen. And if we test it I am sure that it will work. Okay. Somehow we test everything which I have not even asked for. Okay. When I do it like this. Okay they might not be any testing. They might be specification mistakes. So that is one. You have to be clear. Okay. You are saying you are allowing derived validation. Okay. Are you allowing derived validation a computed figure? Yes we can do that. We can do that. On computed figure also you can apply validation. So you are saying age less than 15 but age was a form field. Yes. Now can I have a hidden form field called age. Take a form date of birth K. Had a computed field which is not age but it is 8 field minus today's date. Yes. Now can I say that the birth date is valid if the computed hidden field is greater than 15. Yes we can do that. That was not covered. That can be done. Now you had formulate. Can I have a logical formula because this came up in one of the things. Currently we have implemented only the basic arithmetic formulas. Can we definitely be extended to include a logical and a relational formula. No. That is not what I mean. I have got four fields. Attendance in session one, session two, session three, session four. Correct. And I need a derived field where the person is present and this is my logical rule. If you have attended two out of four is it possible? Yes. Does your current system allow it? Current system I don't think it would allow this kind of validation but it can Because I can add. Okay. It can definitely be extended to that but currently we just had to implement our concept over here. We can implement that. Again it is the same question of errors. Suppose there is a database error. How will your system behave? Database error. Probably we have included, I mean the user interface is such that the database error will mostly not occur. I mean I haven't faced any kind of database error. So you are saying if I use your system I cannot develop my own forms with software, correct? Is that what you are saying? I have generated 10 forms using your system. And I have got another 10 forms which is done by my buggy programmer. And he has managed to create a system react to it. If it is developed through our system then they will... Database error means you are expecting one field to be there. It's a compulsory field. It's not there. The related field may be total balance and the balance itself is not there. It is none, NAN which is not expected. You expect zero. How does your system react to unexpected behavior for your related table? Your table I can understand but related table. Currently we haven't tested for those kinds of things. I think the concept is very nice. No doubt about it. Thank you.