<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Declaring Rule Inputs in child interface</title><link>https://community.appian.com/discussions/f/best-practices/10995/declaring-rule-inputs-in-child-interface</link><description>A lot of child interfaces don&amp;#39;t have variables(ri!) declared. Does not declaring ri! in child interface cause any performance or any such issues? If yes, then this should be made a part of best practice.</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/52383?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2018 18:05:05 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d02359b5-2311-4708-9fd4-9f7fde97c265</guid><dc:creator>sureshg57</dc:creator><description>Still, i think it is not a good way of coding in SAIL.  if you use a variable in Expression rule with out defining rule input still it wont show an error (Invalid variable(s) found)  but it make the code read very hard and also can not test stand alone prone to a lot of errors, hard to debug as well as  if a  new developer join you team, they may have very difficult time understanding what is happening in the code it self.&lt;br /&gt;
&lt;br /&gt;
Also if you take user interfaces if you do not define rule input it will complain about the invalid variables.&lt;br /&gt;
&lt;br /&gt;
Not defining rule input seem to me like lazy way of getting around what we need to do and will produce not so developer friendly readable code.&lt;br /&gt;
&lt;br /&gt;
Regards&lt;br /&gt;
Suresh G&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/52361?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2018 12:23:33 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:2e3660c9-a813-40a4-8e56-1f5889d41ac6</guid><dc:creator>Abhay Giri</dc:creator><description>Hi trishar,&lt;br /&gt;
&lt;br /&gt;
&amp;quot;A lot of child interfaces don&amp;#39;t have variables(ri!) declared.&amp;quot; where you saw this ? if this is the case then may it is requirement there. &lt;br /&gt;
 &lt;br /&gt;
we can not make anything best practice based on one rule or design. declaring rule input in child interface totally depend on the requirements.&lt;br /&gt;
&lt;br /&gt;
If that child interface can be reused in any where in the entire application it is always good to declare the rule inputs so it can be reused by anyone without bothering the logic inside the interface.&lt;br /&gt;
&lt;br /&gt;
if any child interface is created only for a specific requirement and it will never reused then you can avoid creating rule input.&lt;br /&gt;
&lt;br /&gt;
regards&lt;br /&gt;
Abhay&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/52348?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2018 08:38:14 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:bab96b7d-fe73-42d3-b10d-e64900a053c7</guid><dc:creator>viveku3486</dc:creator><description>You should have to declare ri! variables in child interface its a good practice Some of the advantages of it are as below&lt;br /&gt;
&lt;br /&gt;
1) If any operations need to be done on the variables before getting its final value, Then in that case u should just need to do this in the parent interface and simply pass the modified values in child interface. This makes code more feasible because next time when u are checking the logic, You don&amp;#39;t need to dig inside each n every rules u created&lt;br /&gt;
&lt;br /&gt;
2) If you are testing the interface and want to check what value your variables are storing, In that case your ri! variable helps you a a lot. Otherwise you have to create additional text box for storing and checking the local!variables value&lt;br /&gt;
&lt;br /&gt;
3) In future if you need to enhance your code in such a way that some data needs to be taken from process model, Then you don&amp;#39;t need to add any additional ri!variables under your interface(As it will already be available)&lt;br /&gt;
&lt;br /&gt;
4)ri!variables also help to figure out the lifetime of a variable i.e upto how many interfaces/rule that variable exists&lt;br /&gt;
&lt;br /&gt;
5) No chances of name Mismatch, That would be possible in case of local variable, etc&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/52345?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2018 05:06:14 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c56dd52f-9bc7-4fc8-bea7-1cef8ec77d94</guid><dc:creator>smriti p0001</dc:creator><description>yes its bad design, it becomes very difficult to maintain when you many levels of child interfaces.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48140?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 15:29:06 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:2cc498dd-6e81-4a3d-bbf3-2343baf22c31</guid><dc:creator>Rama Thummala</dc:creator><description>&lt;a href="/members/tirshar121"&gt;tirshar121&lt;/a&gt; , Please refer &lt;a href="https://docs.appian.com/suite/help/17.3/SAIL_Performance.html"&gt;docs.appian.com/.../SAIL_Performance.html&lt;/a&gt; for more details.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48131?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 14:41:29 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:afa68d16-cc8f-4817-8b08-11f5272e417d</guid><dc:creator>sergeiz</dc:creator><description>OMG! I tried and it works. The called interface took value from the calling interface. This is just ugly. In Java or other programming variable visibility is controlled by specific tools, but it is always clear on the level of the element being called what variable it is accessing. Here it will be just accessing nearest context available variable by name.&lt;br /&gt;
&lt;br /&gt;
In this case I don&amp;#39;t see any design issues if someone decided to not used any parameters when splitting an interface. But I assume such decision can be made in absolute certainty that the child will always be a child of this parent and no need in separate testing. Otherwise usual way is to parametrise a rule either it is interface or expression.&lt;br /&gt;
&lt;br /&gt;
Usually it cannot cause any performance issues as the data for an interface is limited.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48129?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 14:19:51 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a7629c98-ca5c-4dad-8ce5-c26d41b95128</guid><dc:creator>Mike Schmitt</dc:creator><description>A child interface is a separate interface/rule called by a parent, which relies on the inherited variables (both local and ri!) from the parent.  It will work since the interpreting engine simply assumes the local! and ri! variables called in the child are referring to those defined in the parent, but as others have noted here it&amp;#39;s sloppy and not easy to test or maintain.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48127?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 14:13:56 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:1c0cfed9-c5ce-4876-9735-9b40ac5ddb20</guid><dc:creator>sergeiz</dc:creator><description>Hello!&lt;br /&gt;
&lt;br /&gt;
I&amp;#39;m not sure I understood a single part of question. What is a child interface? Usually, interface display some data and collect some input from the user. What will be displayed on interface without incoming parameters? Where to input will be saved?&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48106?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 08:30:18 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8986e5c7-fc91-4bf8-b7ba-a4f12087033a</guid><dc:creator>sureshg57</dc:creator><description>Yes it is a best practice to declare the rule inputs. There are many reasons to that. &lt;br /&gt;
It will make easier to maintain&lt;br /&gt;
Defining rule input allows you to test the user interface.&lt;br /&gt;
Interface can be reused in many places and it will be easy for someone other than the developer who developed the interface to use it.&lt;br /&gt;
If we do not define rule inputs the context of the interface limits to the parent interface most of the time as this will have a tight coupling due to the way we set and use variables in child and parent interfaces.&lt;br /&gt;
&lt;br /&gt;
So define your rule inputs that is a best practice.&lt;br /&gt;
&lt;br /&gt;
Regards&lt;br /&gt;
Suresh&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48105?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 07:51:20 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:21a6d17a-0e55-46aa-92e0-675957413ab9</guid><dc:creator>vamshib</dc:creator><description>It is suggested to declare the rule inputs in any of the interface/expression rule.. which can help to test it in the stage of development and easily maintainable.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Declaring Rule Inputs in child interface</title><link>https://community.appian.com/thread/48104?ContentTypeID=1</link><pubDate>Wed, 30 Aug 2017 07:09:36 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a711906d-2b6c-4aec-9f3d-29b1e06acf64</guid><dc:creator>Stefan Helzle</dc:creator><description>It simply is bad design to not declare inputs. It makes maintenance a hell. So yes, it is a best practice to do so.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>