Rendering rules are failing to match data

  • 1
  • Problem
  • Updated 3 days ago
  • In Progress
In v11.2.11 I have rendering rules on Page Titles on a popup. The rules do not match the data in the models being used. The action steps leading up to the popup change and save the data in the model, and the appearance is that the rules process before the save completes.
Photo of Mike Dwyer

Mike Dwyer

  • 3,330 Points 3k badge 2x thumb

Posted 4 days ago

  • 1
Photo of Mike Dwyer

Mike Dwyer

  • 3,330 Points 3k badge 2x thumb
Skuid: Some help please?

I now have the action steps changing and saving the data TWICE in hopes that the second change/save will wait for the first save to complete. Then, if the rendering rules fire before the second save completes, at least the tested values will be correct. But no. In fact, the values tested by the rules appear to be NULLS, at least if I use a UI-only field as one of the fields changed along the way.

IS my thinking totally wrong here? Am I expecting sequential processing when there is no "sequence"? Please explain!

Photo of Stephen Sells

Stephen Sells, Official Rep

  • 16,856 Points 10k badge 2x thumb
Hey Mike, Sorry you're going through this.

Do you have any XML that reproduces the problem using standard objects and fields? I'd love to see what you're running into
Photo of Mike Dwyer

Mike Dwyer

  • 3,330 Points 3k badge 2x thumb
Thanks, Stephen!
Photo of Mike Dwyer

Mike Dwyer

  • 3,330 Points 3k badge 2x thumb
The code (with User) shared here might shed some light:
https://community.skuid.com/skuid/topics/what-would-cause-a-model-to-display-in-a-table-but-not-a-fi...

As to the rendering rules, here are snippets using my custom objects. Please review the logic and expectations versus the actual results. The section shown uses a field editor to display the values and rules more clearly.

            <actionsequence id="244dffcd-8ae1-4c4c-a53e-3276b6de5670" label="scheduleContactsPopup" type="reusable" event-scope="component" event-name="Network: Disconnected" uniqueid="sk-2o5N-3428">
                <description>This popup allows the user to schedule Contacts for an EventSlot (Visitation_Slot) selected from the Calendar.
(The Action Sequence is used primarily to provide quicker access to the popup in the Composer.)
The steps also test the event's lock status. If unlocked, a lock is placed for the offender and any other 
locks held by the offender are cleared.</description>
                <actions>
                    <action type="setCondition" model="OffenderEventSchedules" condition="CCM_Visitation_Slot__c" value="{{$Model.EventSlot.data.0.Id}}"/>
                    <action type="setCondition" model="ContactsNotScheduled" condition="CCM_Visitation_Slot" value="{{$Model.EventSlot.data.0.Id}}"/>
                    <action type="setCondition" model="EventSlot" condition="SelectedEventId" value="{{$Model.EventSlot.data.0.Id}}"/>
                    <action type="requeryModels" model="ContactsNotScheduled" behavior="standard">
                        <models>
                            <model>EventSlot</model>
                            <model>OffenderSchedules</model>
                            <model>OffenderEventSchedules</model>
                            <model>ContactsNotScheduled</model>
                        </models>
                    </action>
                    <action type="branch" whenfinished="continue" model="EventSlot" label="Last lock has expired">
                        <formula>{{Lock_Has_Expired__c}} == true</formula>
                        <iftrueactions>
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="Lock_Time__c" enclosevalueinquotes="false" value="NOW"/>
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="Locked_By_Offender__c" fieldtargetobjects="LOIS_Offender__c" enclosevalueinquotes="true" value="{{$Param.offenderid}}"/>
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="UI_Test" enclosevalueinquotes="false" value="One"/>
                            <action type="save">
                                <models>
                                    <model>EventSlot</model>
                                </models>
                                <onerroractions>
                                    <action type="blockUI" message="Error setting hold. See console. One moment, please..." timeout="3500"/>
                                    <action type="custom" snippet="setLockErrorMessage"/>
                                </onerroractions>
                            </action>
<!--
THIS IS WHERE I DUPLICATE THE CHANGE AND SAVE STEPS
-->
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="Lock_Time__c" enclosevalueinquotes="false" value="NOW"/>
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="Locked_By_Offender__c" fieldtargetobjects="LOIS_Offender__c" enclosevalueinquotes="true" value="{{$Param.offenderid}}"/>
                            <action type="updateRow" fieldmodel="EventSlot" affectedrows="all" field="UI_Test" enclosevalueinquotes="false" value="Two"/>
                            <action type="save">
                                <models>
                                    <model>EventSlot</model>
                                </models>
                                <onerroractions>
                                    <action type="blockUI" message="Error setting hold. See console. Two moments, please..." timeout="3500"/>
                                </onerroractions>
                            </action>
<!--
Back to the original sequence
-->
                            <action type="requeryModel" model="LockedSlots" behavior="standard"/>
                        </iftrueactions>
                    </action>
<!--
This is one point of curiosity. Does the next 'action' wait for the preceding 'branch' to complete, 
or does it begin processing as a result of the whenfinished="continue" property on the branch?
-->
                    <action type="showPopup">
                        <popup title="Schedule Visitors for This Time Slot" width="90%">
                            <components>
                                <basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="EventSlot" uniqueid="sk-3rPh-1828" mode="readonly">
                                    <columns>
                                        <column width="33.3%" uniqueid="sk-3rPh-1824">
                                            <sections>
                                                <section title="Section A" uniqueid="sk-3rPh-1825" collapsible="no">
                                                    <fields>
                                                        <field uniqueid="sk-3rPt-1855" id="Locked_By_Offender__c"/>
                                                        <field uniqueid="sk-3rPt-1856" id="Locked_By_Offender__r.Id"/>
                                                        <field uniqueid="sk-3rPz-1881" type="COMBO" editmodebehavior="autopopup">
                                                            <label>Rendering Rule-Is This</label>
                                                            <template>Is This Offender</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_IsOffender" fieldtargetobjects="CCM_Visitation_Slot__c" value="true"/>
                                                            </renderconditions>
                                                            <enableconditions logictype="and"/>
                                                        </field>
                                                        <field uniqueid="sk-3rPz-1881" type="COMBO" editmodebehavior="autopopup">
                                                            <label>Rendering Rule-Null</label>
                                                            <template>Is Null</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="blank" operator="=" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_IsOffender" fieldtargetobjects="CCM_Visitation_Slot__c" value="null" enclosevalueinquotes="false"/>
                                                            </renderconditions>
                                                            <enableconditions logictype="and"/>
                                                        </field>
                                                    </fields>
                                                </section>
                                            </sections>
                                        </column>
                                        <column width="33.3%" uniqueid="sk-3rPh-1826">
                                            <sections>
                                                <section title="Section B" uniqueid="sk-3rPh-1827" collapsible="no">
                                                    <fields>
                                                        <field uniqueid="sk-3rPt-1857" id="UI_OffenderId"/>
                                                        <field uniqueid="sk-3rPt-1858" id="UI_IsOffender"/>
                                                        <field uniqueid="sk-3rP--1892" type="COMBO" editmodebehavior="autopopup">
                                                            <label>Rendering Rule-Not This</label>
                                                            <template>Not This Offender</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_IsOffender" fieldtargetobjects="CCM_Visitation_Slot__c" value="false"/>
                                                            </renderconditions>
                                                            <enableconditions logictype="and"/>
                                                        </field>
                                                        <field uniqueid="sk-3rP--1892" type="COMBO" editmodebehavior="autopopup">
                                                            <label>Rendering Rule-Not Null</label>
                                                            <template>Not Null</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="blank" operator="!=" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_IsOffender" fieldtargetobjects="CCM_Visitation_Slot__c" value="null" enclosevalueinquotes="false"/>
                                                            </renderconditions>
                                                            <enableconditions logictype="and"/>
                                                        </field>
                                                    </fields>
                                                </section>
                                            </sections>
                                        </column>
                                        <column width="33.3%" uniqueid="sk-3uxm-697">
                                            <sections>
                                                <section title="New Section" collapsible="no" uniqueid="sk-3uxm-698">
                                                    <fields>
                                                        <field uniqueid="sk-3uxs-711" id="UI_Test"/>
                                                        <field uniqueid="sk-3uxw-721" type="COMBO" editmodebehavior="autopopup">
                                                            <label>RR-One</label>
                                                            <template>One</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_Test" fieldtargetobjects="CCM_Visitation_Slot__c" value="1"/>
                                                            </renderconditions>
                                                            <enableconditions/>
                                                        </field>
                                                        <field uniqueid="sk-3uxx-728" type="COMBO" editmodebehavior="autopopup">
                                                            <label>RR-Two</label>
                                                            <template>Two</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_Test" fieldtargetobjects="CCM_Visitation_Slot__c" value="2"/>
                                                            </renderconditions>
                                                            <enableconditions/>
                                                        </field>
                                                        <field uniqueid="sk-3uyI-937" type="COMBO" editmodebehavior="autopopup">
                                                            <label>RR-Neither</label>
                                                            <template>Neither</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="multiple" operator="in" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_Test" fieldtargetobjects="CCM_Visitation_Slot__c" value="" enclosevalueinquotes="false">
                                                                    <values>
                                                                        <value>One</value>
                                                                        <value>Two</value>
                                                                    </values>
                                                                </rendercondition>
                                                            </renderconditions>
                                                            <enableconditions/>
                                                        </field>
                                                        <field uniqueid="sk-3uy--1386" type="COMBO" editmodebehavior="autopopup">
                                                            <label>RR-Null</label>
                                                            <template>Null</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="blank" operator="=" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_Test" fieldtargetobjects="CCM_Visitation_Slot__c" value="null" enclosevalueinquotes="false"/>
                                                            </renderconditions>
                                                            <enableconditions/>
                                                        </field>
                                                        <field uniqueid="sk-3uzC-1476" type="COMBO" editmodebehavior="autopopup">
                                                            <label>RR-Not Null</label>
                                                            <template>Not Null</template>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep">
                                                                <rendercondition type="blank" operator="!=" fieldmodel="EventSlot" sourcetype="fieldvalue" field="UI_Test" fieldtargetobjects="CCM_Visitation_Slot__c" value="null" enclosevalueinquotes="false"/>
                                                            </renderconditions>
                                                            <enableconditions/>
                                                        </field>
                                                    </fields>
                                                </section>
                                            </sections>
                                        </column>
                                    </columns>
                                </basicfieldeditor>


HERE ARE THE UI-ONLY FIELDS ON THE EVENTSLOT MODEL:

                <field id="Locked_By_Offender__r.Id"/>
                <field id="UI_OffenderId" uionly="true" displaytype="FORMULA" label="UI OffenderId" ogdisplaytype="TEXT" readonly="true" returntype="TEXT">
                    <formula>{{$Param.offenderid}}</formula>
                </field>
                <field id="UI_IsOffender" uionly="true" displaytype="FORMULA" label="UI isOffender" ogdisplaytype="TEXT" readonly="true" returntype="BOOLEAN">
                    <formula>{{Locked_By_Offender__r.Id}} == {{$Param.offenderid}}</formula>
                </field>
                <field id="UI_Test" uionly="true" displaytype="TEXT" label="UI Test" ogdisplaytype="TEXT" precision="9" scale="0"/>


HERE ARE THE RESULTS