Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    operationId not operating

    A selectItem on a new form is not operating correctly. I have a special SQL fetch defined for it and it does not seem be invoked. Instead a standard fetch is performed. Oddly, another, already existing and working selectItem, for which a similar operattionId fetch exists, has stopped working.

    I know I am invoking it. The developer log below shows the picklist resultset being created with the operation being applied. After that it can be seen that 4 records are fetched. That should be 2 records if the special fetch is used. It is a negative join. And, it works correctly when applied directly to the database.
    10:53:44.094:MUP1:DEBUG:Log:********************** MeetingParticipantNewButton.Click
    10:53:44.227:MUP1:INFO:ResultSet:isc_PickListMenu_6:Creating new isc.ResultSet for operation 'excludeCurrentParticipants' with filterValues: {
    "MeetingTypeID":101,
    "CommunityID":101
    }
    10:53:44.228:MUP1:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):setCriteria: filter criteria changed, invalidating cache
    10:53:44.228:MUP1:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):Invalidating cache
    10:53:44.235:MUP1:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0,1), cache check: 0,37 firstMissingRow: 0 lastMissingRow: 37
    10:53:44.235:MUP1:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange: guessing forward scrolling
    10:53:44.235:MUP1:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 1) will fetch from 0 to 75
    10:53:44.235:MUP1:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):fetching rows 0,75 from server
    10:53:44.292:MUP1:DEBUG:Log:***END***END***END*** MeetingParticipantNewButton.Click
    10:53:44.613:TMR6:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):Received 4 records from server
    10:53:44.613:TMR6:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):full length set to: 4
    10:53:44.613:TMR6:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):integrating 4 rows into cache at position 0
    10:53:44.613:TMR6:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):cached 4 rows, from 0 to 3 (4 total rows, 4 cached)
    10:53:44.613:TMR6:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):Cache for current criteria complete
    10:53:44.614:TMR6:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 1) satisfied from cache
    10:53:44.614:TMR6:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 1) satisfied from cache
    10:53:47.296:IFCS2:INFO:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):setCriteria: filter criteria unchanged
    10:53:47.297:IFCS2:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 1) satisfied from cache
    10:53:47.356:IFCS2:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 4) satisfied from cache
    10:53:47.679:RDQ7:DEBUG:ResultSet:isc_ResultSet_21 (created by: isc_PickListMenu_6):getRange(0, 4) satisfied from cache
    But, somehow, the operationId is not getting to the server. I cannot really show the fetch because there is none. The request is being satisfied from some cache. Here is the end of the server log. It starts with the fetch for the participant grid. After presentation of that, the test is to click the NEW button and create a new Participant. But, the selectItem has to use the negative join so that it is only possible to add team members that are not already participants.
    === 2013-03-24 14:53:40,453 [sor8] DEBUG RPCManager - Processing 1 requests.
    === 2013-03-24 14:53:40,625 [sor8] DEBUG RPCManager - Request #1 (DSRequest) payload: {
    criteria:{
    },
    operationConfig:{
    dataSource:"Participant",
    operationType:"fetch",
    textMatchStyle:"substring"
    },
    startRow:0,
    endRow:75,
    componentId:"MeetingParticipantsGrid",
    appID:"builtinApplication",
    operation:"Participant_fetch",
    oldValues:{
    }
    }
    === 2013-03-24 14:53:40,625 [sor8] INFO IDACall - Performing 1 operation(s)
    === 2013-03-24 14:53:40,859 [sor8] DEBUG AppBase - [builtinApplication.Participant_fetch] No userTypes defined, allowing any
    one access to all operations for this application
    === 2013-03-24 14:53:40,859 [sor8] DEBUG AppBase - [builtinApplication.Participant_fetch] No public zero-argument method nam
    ed '_Participant_fetch' found, performing generic datasource operation
    === 2013-03-24 14:53:40,859 [sor8] INFO SQLDataSource - [builtinApplication.Participant_fetch] Performing fetch operation w
    ith
    criteria: {} values: {}
    === 2013-03-24 14:53:40,859 [sor8] INFO SQLWhereClause - [builtinApplication.Participant_fetch] empty condition
    === 2013-03-24 14:53:40,859 [sor8] INFO SQLDataSource - [builtinApplication.Participant_fetch] derived query: SELECT $defau
    ltSelectClause FROM (TeamMember, MeetingType, Participant) LEFT JOIN Organization ON Organization.OrganizationID = TeamMembe
    r.OrganizationID WHERE Participant.TeamMemberID = TeamMember.TeamMemberID AND Participant.MeetingTypeID = MeetingType.Meeti
    ngTypeID AND ($defaultWhereClause)
    === 2013-03-24 14:53:40,859 [sor8] DEBUG SQLDataSource - [builtinApplication.Participant_fetch] Executing row count query: S
    ELECT COUNT(*) FROM (TeamMember, MeetingType, Participant) LEFT JOIN Organization ON Organization.OrganizationID = TeamMembe
    r.OrganizationID WHERE Participant.TeamMemberID = TeamMember.TeamMemberID AND Participant.MeetingTypeID = MeetingType.Meeti
    ngTypeID AND ($defaultWhereClause)
    === 2013-03-24 14:53:40,859 [sor8] DEBUG SQLDataSource - [builtinApplication.Participant_fetch] Eval'd row count query: SELE
    CT COUNT(*) FROM (TeamMember, MeetingType, Participant) LEFT JOIN Organization ON Organization.OrganizationID = TeamMember.O
    rganizationID WHERE Participant.TeamMemberID = TeamMember.TeamMemberID AND Participant.MeetingTypeID = MeetingType.MeetingT
    ypeID AND (('1'='1'))
    === 2013-03-24 14:53:40,859 [sor8] DEBUG PoolableSQLConnectionFactory - [builtinApplication.Participant_fetch] DriverManager
    fetching connection for PlanetProjectDB via jdbc url jdbc:mysql://localhost:3306/PUBLIC
    === 2013-03-24 14:53:40,859 [sor8] DEBUG PoolableSQLConnectionFactory - [builtinApplication.Participant_fetch] Passing crede
    ntials getConnection separately from JDBC URL
    === 2013-03-24 14:53:41,046 [sor8] DEBUG PoolableSQLConnectionFactory - [builtinApplication.Participant_fetch] Returning poo
    led Connection
    === 2013-03-24 14:53:41,046 [sor8] DEBUG SQLTransaction - [builtinApplication.Participant_fetch] Started new PlanetProjectDB
    transaction "19545556"
    === 2013-03-24 14:53:41,046 [sor8] INFO SQLDriver - [builtinApplication.Participant_fetch] Executing SQL query on 'PlanetPr
    ojectDB': SELECT COUNT(*) FROM (TeamMember, MeetingType, Participant) LEFT JOIN Organization ON Organization.OrganizationID
    = TeamMember.OrganizationID WHERE Participant.TeamMemberID = TeamMember.TeamMemberID AND Participant.MeetingTypeID = Meetin
    gType.MeetingTypeID AND (('1'='1'))
    === 2013-03-24 14:53:41,218 [sor8] DEBUG SQLDataSource - [builtinApplication.Participant_fetch] Using SQL Limit query
    === 2013-03-24 14:53:41,218 [sor8] DEBUG SQLDataSource - [builtinApplication.Participant_fetch] SQL windowed select rows 0->
    75, result size 75. Query: SELECT Participant.CommunityID, Participant.Created, Participant.Description, Organization.Intern
    al, Participant.MeetingTypeID, Participant.Modified, Organization.OrganizationName, Participant.Present, Participant.Require
    d, TeamMember.TeamMemberEmail, Participant.TeamMemberID, TeamMember.TeamMemberName FROM (TeamMember, MeetingType, Participan
    t) LEFT JOIN Organization ON Organization.OrganizationID = TeamMember.OrganizationID WHERE Participant.TeamMemberID = TeamM
    ember.TeamMemberID AND Participant.MeetingTypeID = MeetingType.MeetingTypeID AND (('1'='1')) LIMIT 0, 75
    === 2013-03-24 14:53:41,218 [sor8] INFO DSResponse - [builtinApplication.Participant_fetch] DSResponse: List with 2 items
    === 2013-03-24 14:53:41,218 [sor8] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2013-03-24 14:53:41,218 [sor8] DEBUG SQLTransaction - Committing PlanetProjectDB transaction "19545556"
    === 2013-03-24 14:53:41,218 [sor8] DEBUG RPCManager - non-DMI response, dropExtraFields: false
    === 2013-03-24 14:53:41,218 [sor8] DEBUG SQLTransaction - Ending PlanetProjectDB transaction "19545556"
    === 2013-03-24 14:53:41,234 [sor8] INFO Compression - /isomorphic/IDACall: 749 -> 398 bytes
    Here is the code that invokes it.
    Code:
    Log.setPriority("Log", 5);
    Log.logDebug("********************** MeetingParticipantNewButton.Click");
    
    //  alert("MeetingParticipantNewButton.Click");
    
        if (!window.MeetingParticipantWindow) {
            var message = "Component ID \"MeetingParticipantWindow\", target of action \"Show\" does not exist";
            isc.Log.logWarn(message);
            if (isc.designTime) {
                isc.say(message);
            }
        }
    
    //  MeetingParticipantWindow.show();
    
        var form = MeetingParticipantForm;
    //  alert("MeetingParticipantForm.drawn");
        form.clearValues();
        form.setValue("CommunityID", Application.currentCommunityID ) ;
        form.setValue("MeetingTypeID", Application.currentMeetingTypeID ) ;
        form.getField("TeamMemberID").optionCriteria =  {   "MeetingTypeID" : Application.currentMeetingTypeID,
                                                            "CommunityID" : Application.currentCommunityID } ;
    	//form.getField("TeamMemberID").setOptionOperationId("excludeCurrentParticipants");
    	form.getField("TeamMemberID").setProperty("cachePickListResults",false);
        //form.setValue("MeetingTypeAdmin", false) ;
        form.rememberValues();
    //  form.newLogEntry = null;
    //  form.changesPending = false;
        form.setSaveOperationType("add");
        form.getItem("SaveButton").setDisabled(true);
        form.getItem("UndoButton").setDisabled(true);
    
    //  TeamMember.invalidateCache(); // force new fetch of team members for negative join
    
        MeetingParticipantWindow.show();
    
        MeetingParticipantWindow.setTitle("New Participant for MeetingType " + Application.currentMeetingName + ": " + Application.currentMeetingTypeTitle);
    
    Log.logDebug("***END***END***END*** MeetingParticipantNewButton.Click");
    And, here is the dataSource xml with the special fetches.
    Code:
    <DataSource ID="TeamMember" dataFormat="iscServer" serverType="sql" dataSourceVersion="1" dbName="PlanetProjectDB" schema="PUBLIC" autoDeriveSchema="true">
        <fields>
            <field name="TeamMemberID" type="sequence" primaryKey="true"/>
            <field name="CommunityID" type="integer" required="true" title="Community" canEdit="false" foreignKey="Community.CommunityID"/>
            <field name="TeamMemberName" type="text" required="true" length="64" title="Name" canEdit="true"/>
            <field name="Enabled" type="boolean" required="true" title="Enabled" canEdit="true" sqlStorageStrategy="integer"/>
            <field name="TeamMemberEmail" type="text" length="64" title="Email" canEdit="true"/>
            <field name="TeamMemberSMS" type="text" length="64" title="Email" canEdit="true"/>
    		<field name="EmailAlertOption" type="boolean" required="true" title="Email Alerts" canEdit="true" sqlStorageStrategy="integer"/>
    		<field name="SmsAlertOption" type="boolean" required="true" title="SMS Alerts" canEdit="true" sqlStorageStrategy="integer"/>
    		<field name="IssueOwnerAlerts" type="boolean" required="true" title="Auto Issue Alerts" canEdit="true" sqlStorageStrategy="integer"/>
    		<field name="TaskOwnerAlerts" type="boolean" required="true" title="Auto Task Alerts" canEdit="true" sqlStorageStrategy="integer"/>
            <field name="EmailConfirmed" type="boolean" required="true" title="Confirmed" canEdit="false" sqlStorageStrategy="integer"/>
            <field name="Password" type="text" length="64" title="Password"/>
            <field name="OrganizationID" type="integer" required="true" title="Organization" canEdit="true" foreignKey="Organization.OrganizationID"/>
            <field name="OrganizationName" type="text" required="false" title="Organization" canEdit="false">
                <tableName>Organization</tableName>
            </field>
            <field name="Internal" type="boolean" required="false" title="Internal" canEdit="true" sqlStorageStrategy="integer">
                <tableName>Organization</tableName>
            </field>        
            <field name="BasePhone" type="text" length="64" title="Phone" canEdit="true"/>
            <field name="MobilePhone" type="text" length="64" title="Mobile" canEdit="true"/>
            <field name="PostalAddress" type="text" length="255" title="Address" detail="true" canEdit="true"/>
            <field name="TimeZoneKey" type="text" required="true" length="128" title="Time Zone" detail="true" canEdit="true" foreignKey="TimeZone.TimeZoneKey"/>
            <field name="LocaleKey" type="text" required="true" length="5" title="Locale" detail="true" canEdit="true" hidden="false" foreignKey="Locale.LocaleKey"/>
            <field name="DateFormatKey" type="text" length="64" title="Date Format" detail="true" canEdit="true"/>
            <field name="CommunityAdmin" type="boolean" title="Community Admin" detail="true" canEdit="true" sqlStorageStrategy="integer"/>        
            <field name="AccountAdmin" type="boolean" title="Account Admin" detail="true" canEdit="true" sqlStorageStrategy="integer"/>
            <field name="Log" type="text" length="2147483647" title="Log" detail="true"/>
            <field name="Created" type="creatorTimestamp" title="Created" detail="true"/>
            <field name="Modified" type="modifierTimestamp" title="Modified" detail="true"/>
        </fields>
        <cacheAllData>true</cacheAllData>
        <operationBindings>
            <OperationBinding>
                <operationType>fetch</operationType>
                <operationId>excludeCurrentStakeholders</operationId>
                <tableClause>(Organization, TeamMember) cross join Project left join Stakeholder on TeamMember.TeamMemberID=Stakeholder.TeamMemberID and Project.ProjectID=Stakeholder.ProjectID</tableClause>
                <whereClause>Organization.OrganizationID = TeamMember.OrganizationID AND Stakeholder.TeamMemberID IS NULL AND TeamMember.CommunityID = $criteria.CommunityID AND Project.ProjectID = $criteria.ProjectID</whereClause>
            </OperationBinding>
            <OperationBinding>
                <operationType>fetch</operationType>
                <operationId>excludeCurrentParticipants</operationId>
                <tableClause>(Organization, TeamMember) cross join MeetingType left join Participant on TeamMember.TeamMemberID=Participant.TeamMemberID and MeetingType.MeetingTypeID=Participant.MeetingTypeID</tableClause>
                <whereClause>Organization.OrganizationID = TeamMember.OrganizationID AND Participant.TeamMemberID IS NULL AND TeamMember.CommunityID = $criteria.CommunityID AND MeetingType.MeetingTypeID = $criteria.MeetingTypeID</whereClause>
            </OperationBinding>        
    		<OperationBinding>
    			<operationType>fetch</operationType>
    			<tableClause>(Organization, TeamMember)</tableClause>
    			<whereClause>Organization.OrganizationID = TeamMember.OrganizationID  AND ($defaultWhereClause)</whereClause>
    		</OperationBinding>
        </operationBindings>
        <title>TeamMember</title>
        <titleField>TeamMemberName</titleField>
        <pluralTitle>TeamMembers</pluralTitle>
        <generatedBy>SC_SNAPSHOT-2012-01-09_v8.2p/Pro Deployment 2012-01-09</generatedBy>
    </DataSource>
    I don't know what I am doing to muck it up. A forum search found a similar issue that had been fixed last year in 9.0, but not yet also applied to 8.3. I cannot believe it could still exist in 8.2 with all your testing.

    Maybe you can see where I have goofed up. I note that both fetches stopped working. So, maybe my dataSource is hokey. But, I cannot see it. Does the order matter?

    Thanks,

    Rick

    P.S. I am running SmartClient_v82p_2013-03-11/EVAL Development Only on Mozilla Firefox 12.0 with Firebug using Windows XP Pro 32 bit.

    #2
    You can't change optionOperationId on the fly in a SelectItem, because it's very unclear what would be expected to happen with respect to current cache, outstanding fetches, meaning of current criteria applied, etc.

    Instead, create a single operationId that fulfills both the initial fetch and subsequent fetch.

    Comment


      #3
      I am not sure what indicates I am changing the operationId. I have two of them. And, two different selectItems. The excludeCurrentStakeholders is for TeamMembers to be added as Stakeholders using a selectItem on the StakeholderForm. The excludeCurrentParticipants is for TeamMembers to be added as Participants using a selectItem on the ParticipantForm.

      The excludeCurrentStakeholders operationId used to work. I had not tested it in months, however. The excludeCurrentParticipants operationId is new. Now, neither of them work.

      They only thing that changes on the fly are the criteria applied which are used to form different primary key components. What they have in common is that TeamMemberID is a common PL component.

      Rick

      Comment


        #4
        Well, you showed code like this, without any context:

        Code:
            form.getField("TeamMemberID").optionCriteria =  {   "MeetingTypeID" : Application.currentMeetingTypeID,
                                                                "CommunityID" : Application.currentCommunityID } ;
        	//form.getField("TeamMemberID").setOptionOperationId("excludeCurrentParticipants");
        	form.getField("TeamMemberID").setProperty("cachePickListResults",false);
        Whether done after the form has been created or at some other time, this coding pattern is always wrong.

        Read the QuickStart Guide Data Binding chapter about how to correctly provide properties to FormItems that will be automatically created by the form.

        For anything set after initialization, whether it's flag to do so or not is indicated the flags (eg "IRW") on the method. Click on the flags in the SmartClient Reference for more details on what they mean, and note the requirement to call setProperties() when setting properties after create().

        Comment


          #5
          I apologize for leaving all the commented out code around.

          The line you see to setOptionOperationId did not work. I think I got it from a forum post. It bombed for me right away as not being found.

          So, the code that ran looks like this.
          Code:
          Log.setPriority("Log", 5);
          Log.logDebug("********************** MeetingParticipantNewButton.Click");
          
              if (!window.MeetingParticipantWindow) {
                  var message = "Component ID \"MeetingParticipantWindow\", target of action \"Show\" does not exist";
                  isc.Log.logWarn(message);
                  if (isc.designTime) {
                      isc.say(message);
                  }
              }
          
              var form = MeetingParticipantForm;
              form.clearValues();
              form.setValue("CommunityID", Application.currentCommunityID ) ;
              form.setValue("MeetingTypeID", Application.currentMeetingTypeID ) ;
              form.getField("TeamMemberID").optionCriteria =  {   "MeetingTypeID" : Application.currentMeetingTypeID,
                                                                  "CommunityID" : Application.currentCommunityID } ;
              form.getField("TeamMemberID").setProperty("cachePickListResults",false);
              form.rememberValues();
              form.setSaveOperationType("add");
              form.getItem("SaveButton").setDisabled(true);
              form.getItem("UndoButton").setDisabled(true);
          
              MeetingParticipantWindow.show();
              MeetingParticipantWindow.setTitle("New Participant for MeetingType " + Application.currentMeetingName + ": " + Application.currentMeetingTypeTitle);
          
          Log.logDebug("***END***END***END*** MeetingParticipantNewButton.Click");
          The formItems are not being automatically by the form. I define the forms inside VisualBuilder and the formItems each have their operationId at initialization.

          I am not posting because the new operationId did not work. It is just that the developer log shows the invocation of an operationId and the server log (and results) do not.

          Thanks for the quick reply.

          Rick

          Comment


            #6
            It doesn't matter whether you're using Component XML vs JavaScript / JSON declarations of the FormItems. You still put the properties you want to set under the <DynamicForm> element or "isc.DynamicForm.create" block rather than trying to adjust them after they have already been created.

            And the flags previously discussed apply identically as well.

            Comment


              #7
              OK. It is not possible to enter everything at initialization time. Specifically, the criterion. It contains key values at run time.

              I found that my formItem is a selectItem and has pickListCriteria (IRW) that has no setter. So, the code below should work.
              Code:
              Log.setPriority("Log", 5);
              Log.logDebug("********************** ProjectStakeholdersNewButton.Click");
              
                  if (!window.ProjectStakeholderWindow) {
                      var message = "Component ID \"ProjectStakeholderWindow\", target of action \"Show\" does not exist";
                      isc.Log.logWarn(message);
                      if (isc.designTime) {
                          isc.say(message);
                      }
                  }
              
                  var form = ProjectStakeholderForm;
                  form.clearValues();
                  form.setValue("CommunityID", Application.currentCommunityID ) ;
                  form.setValue("ProjectID", Application.currentProjectID ) ;
                  form.setValue("ProjectAdmin", false) ;
                  form.rememberValues();
                  form.setSaveOperationType("add");
                  form.getItem("SaveButton").setDisabled(true);
                  form.getItem("UndoButton").setDisabled(true);
              
                  form.getField("TeamMemberID").setProperty("pickListCriteria", {   "ProjectID"   : Application.currentProjectID,
                                                                                    "CommunityID" : Application.currentCommunityID } );
              
                  ProjectStakeholderWindow.show();
              
                  ProjectStakeholderWindow.setTitle("New Stakeholder for Project " + Application.currentProjectNumber + ": " + Application.currentProjectTitle);
              
              Log.logDebug("***END***END***END*** ProjectStakeholdersNewButton.Click");
              Regardless of the method, my efforts did not change the results. ResultSet_15, below, is created for pickListMenu_3 using 'excludeCurrentStakeholders'. There is no fetch in the server log using this operationId. I searched for it. The development log indicates it is being used. And, the server log says it is not.

              17:37:32.840:MUP8:DEBUG:Log:********************** ProjectStakeholdersNewButton.Click
              17:37:33.112:MUP8:DEBUG:Log:***END***END***END*** ProjectStakeholdersNewButton.Click
              17:37:38.195:IFCS7:INFO:ResultSet:isc_PickListMenu_3:Creating new isc.ResultSet for operation 'excludeCurrentStakeholders' with filterValues: {
              "ProjectID":101,
              "CommunityID":101
              }
              17:37:38.196:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):setCriteria: filter criteria changed, invalidating cache
              17:37:38.196:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Invalidating cache
              17:37:38.204:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0,1), cache check: 0,37 firstMissingRow: 0 lastMissingRow: 37
              17:37:38.204:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange: guessing forward scrolling
              17:37:38.204:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) will fetch from 0 to 75
              17:37:38.204:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):fetching rows 0,75 from server
              17:37:38.228:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 11) satisfied from cache
              17:37:38.443:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Received 4 records from server
              17:37:38.443:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):full length set to: 4
              17:37:38.443:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):integrating 4 rows into cache at position 0
              17:37:38.443:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):cached 4 rows, from 0 to 3 (4 total rows, 4 cached)
              17:37:38.443:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Cache for current criteria complete
              17:37:38.443:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 4) satisfied from cache
              17:37:38.444:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
              17:37:38.466:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 4) satisfied from cache
              The cache is invalidated. The fetch receives 4 records. Yet there is no fetch in the server log?

              This test is using the negative join that used to work. When I test it against the database it works. There is something wrong here and I don't know what else to do.

              Thanks,

              Rick

              Comment


                #8
                That's a nonsense result. All we can suggest is:

                1. double-check everything you just said

                2. use the RPC tab to see whether requests are actually going to the server

                3. think about what changed when this started happening - maybe you flipped a DataSource to be clientOnly or cacheAllData, which would of course prevent server requests.

                Comment


                  #9
                  OK. Talk about non-nonsensical results.

                  Attached is the RPC log entry. It shows the operationId. It is [client only]. It is for the WRONG component.

                  This is the JSP for the stakeholder form. The formitem is TeamMemberID.
                  Code:
                  isc.DynamicForm.create({
                      ID:"ProjectStakeholderForm",
                      autoDraw:false,
                      dataSource:"Stakeholder",
                      numCols:4,
                      fields:[
                          {
                              name:"TeamMemberID",
                              title:"Team Member",
                              valueField:"TeamMemberID",
                              displayField:"TeamMemberName",
                              optionDataSource:TeamMember,
                              optionOperationId:"excludeCurrentStakeholders",
                              autoFetchData:false,
                              cachePickListResults:"false",
                              _constructor:"SelectItem"
                          },
                  This is the JSP for the ProjectForm. The formitem is ProjectManagerID.
                  Code:
                  isc.DynamicForm.create({
                      ID:"ProjectForm",
                      autoDraw:false,
                      colWidths:[
                          "60,100,60,*,*,*,*,*,*"
                      ],
                      dataSource:"Project",
                      numCols:9,
                      overflow:"hidden",
                      fields:[
                          {
                              name:"ProjectManagerID",
                              title:"Project Manager",
                              valueField:"TeamMemberID",
                              displayField:"TeamMemberName",
                              optionDataSource:TeamMember,
                              autoFetchData:true,
                              _constructor:"SelectItem"
                          },
                  Of course, the fetch about that time in the server log shows no evidence of using the operationId.
                  === 2013-03-28 14:38:57,781 [sor8] INFO SQLDriver - [builtinApplication.TeamMember_fetch] Executing SQL query on 'PlanetPro
                  jectDB': SELECT TeamMember.AccountAdmin, TeamMember.Agreement, TeamMember.BasePhone, TeamMember.CommunityAdmin, TeamMember.C
                  ommunityID, TeamMember.Created, TeamMember.DateFormatKey, TeamMember.Description, TeamMember.EmailAlertOption, TeamMember.Em
                  ailConfirmed, TeamMember.Enabled, Organization.Internal, TeamMember.IssueOwnerAlerts, TeamMember.LocaleKey, TeamMember.Log,
                  TeamMember.LogEntry, TeamMember.MobilePhone, TeamMember.Modified, TeamMember.OrganizationID, Organization.OrganizationName,
                  TeamMember.Password, TeamMember.PostalAddress, TeamMember.Signature, TeamMember.SmsAlertOption, TeamMember.TaskOwnerAlerts,
                  TeamMember.TeamMemberEmail, TeamMember.TeamMemberID, TeamMember.TeamMemberName, TeamMember.TeamMemberSMS, TeamMember.TimeZon
                  eKey FROM (Organization, TeamMember) WHERE Organization.OrganizationID = TeamMember.OrganizationID AND (('1'='1'))
                  === 2013-03-28 14:38:57,796 [sor8] INFO DSResponse - [builtinApplication.TeamMember_fetch] DSResponse: List with 5 items
                  === 2013-03-28 14:38:57,796 [sor8] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                  === 2013-03-28 14:38:57,796 [sor8] DEBUG SQLTransaction - Committing PlanetProjectDB transaction "29085188"
                  === 2013-03-28 14:38:57,812 [sor8] DEBUG RPCManager - non-DMI response, dropExtraFields: false
                  === 2013-03-28 14:38:57,828 [sor8] DEBUG SQLTransaction - Ending PlanetProjectDB transaction "29085188"
                  === 2013-03-28 14:38:57,828 [sor8] INFO Compression - /isomorphic/IDACall: 2578 -> 615 bytes
                  I am not surprised. The criteria are different. Even with the operationId, the ProjectManagerID fetch would result in 5 records. Then, of course, since there is no change for the next 'fetch' for the TeamMemberID, the same 5 records are returned from the cache. I don't really know. If the operationId is applied to the wrong formitem, then all my reasoning is for naught.

                  10:38:31.394:MUP9:INFO:ResultSet:isc_PickListMenu_3:Creating new isc.ResultSet for operation 'TeamMember_fetch' with filterValues: {
                  }
                  10:38:31.395:MUP9:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):setCriteria: filter criteria changed, invalidating cache
                  10:38:31.395:MUP9:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):Invalidating cache
                  10:38:31.401:MUP9:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):getRange(0,1), cache check: 0,37 firstMissingRow: 0 lastMissingRow: 37
                  10:38:31.402:MUP9:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):getRange: guessing forward scrolling
                  10:38:31.402:MUP9:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):getRange(0, 1) will fetch from 0 to 75
                  10:38:31.402:MUP9:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):fetching rows 0,75 from server
                  10:38:31.448:MUP9:DEBUG:Log:***END***END***END*** MyProjects.OpenProjectButton.Click
                  10:38:31.957:TMR6:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):Received 5 records from server
                  10:38:31.958:TMR6:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):full length set to: 5
                  10:38:31.958:TMR6:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):integrating 5 rows into cache at position 0
                  10:38:31.958:TMR6:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):cached 5 rows, from 0 to 4 (5 total rows, 5 cached)
                  10:38:31.958:TMR6:INFO:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):Cache for entire DataSource complete
                  10:38:31.959:TMR6:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
                  10:38:31.961:TMR6:DEBUG:ResultSet:isc_ResultSet_13 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
                  10:38:32.976:XRP1:INFO:ResultSet:isc_ResultSet_11 (created by: undefined):Received 10 records from server
                  10:38:33.047:XRP2:INFO:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):Received 4 records from server
                  10:38:33.047:XRP2:DEBUG:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):full length set to: 4
                  10:38:33.047:XRP2:DEBUG:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):integrating 4 rows into cache at position 0
                  10:38:33.047:XRP2:INFO:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):cached 4 rows, from 0 to 4 (4 total rows, 4 cached)
                  10:38:33.048:XRP2:INFO:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):Cache for entire DataSource complete
                  10:38:33.049:XRP2:DEBUG:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):getRange(0, 1) satisfied from cache
                  10:38:33.050:XRP2:DEBUG:ResultSet:isc_ResultSet_12 (created by: isc_PickListMenu_2):getRange(0, 1) satisfied from cache
                  10:38:41.634:MDN3[E]:INFO:ResultSet:ProjectStakeholdersGrid:Creating new isc.ResultSet for operation 'Stakeholder_fetch' with filterValues: {
                  "ProjectID":101
                  }
                  10:38:41.635:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):setCriteria: filter criteria changed, invalidating cache
                  10:38:41.636:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):Invalidating cache
                  10:38:41.644:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):$391: sorting on properties [TeamMemberName] : directions [true] : invalidating cache
                  10:38:41.645:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):Invalidating cache
                  10:38:41.649:MDN3[E]:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0,51), cache check: 0,62 firstMissingRow: 0 lastMissingRow: 62
                  10:38:41.649:MDN3[E]:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange: guessing forward scrolling
                  10:38:41.649:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0, 51) will fetch from 0 to 75
                  10:38:41.650:MDN3[E]:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):fetching rows 0,75 from server
                  10:38:41.907:MDN3[E]:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0, 22) satisfied from cache
                  10:38:42.879:XRP8:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):Received 2 records from server
                  10:38:42.880:XRP8:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):full length set to: 2
                  10:38:42.880:XRP8:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):integrating 2 rows into cache at position 0
                  10:38:42.880:XRP8:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):cached 2 rows, from 0 to 2 (2 total rows, 2 cached)
                  10:38:42.883:XRP8:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):Cache for current criteria complete
                  10:38:42.883:XRP8:INFO:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):$391: sorting on properties [TeamMemberName] : directions [true] : full cache allows local sort
                  10:38:43.343:RDQ3:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0, 2) satisfied from cache
                  10:38:49.071:MUP1:DEBUG:Log:********************** ProjectStakeholdersNewButton.Click
                  10:38:49.435:MUP1:DEBUG:Log:***END***END***END*** ProjectStakeholdersNewButton.Click
                  10:38:56.907:IFCS6:INFO:ResultSet:isc_PickListMenu_3:Creating new isc.ResultSet for operation 'excludeCurrentStakeholders' with filterValues: {
                  "ProjectID":101,
                  "CommunityID":101
                  }
                  10:38:56.910:IFCS6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):setCriteria: filter criteria changed, invalidating cache
                  10:38:56.910:IFCS6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Invalidating cache
                  10:38:56.920:IFCS6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0,1), cache check: 0,37 firstMissingRow: 0 lastMissingRow: 37
                  10:38:56.920:IFCS6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange: guessing forward scrolling
                  10:38:56.920:IFCS6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) will fetch from 0 to 75
                  10:38:56.922:IFCS6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):fetching rows 0,75 from server
                  10:38:56.924:IFCS6:INFO:ResultSet:isc_ResultSet_16 (created by: undefined):creating auto-operation for operationType: fetch
                  10:38:56.924:IFCS6:INFO:ResultSet:isc_ResultSet_16 (created by: undefined):setCriteria: filter criteria changed, invalidating cache
                  10:38:56.925:IFCS6:INFO:ResultSet:isc_ResultSet_16 (created by: undefined):Invalidating cache
                  10:38:56.927:IFCS6:INFO:ResultSet:isc_ResultSet_16 (created by: undefined):creating auto-operation for operationType: fetch
                  10:38:57.053:IBLR7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(1, 12) satisfied from cache
                  10:38:57.630:RDQ1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 11) satisfied from cache
                  10:38:57.872:XRP5:INFO:ResultSet:isc_ResultSet_16 (created by: undefined):Received 5 records from server
                  10:38:57.970:TMR6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Received 5 records from server
                  10:38:57.970:TMR6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):full length set to: 5
                  10:38:57.970:TMR6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):integrating 5 rows into cache at position 0
                  10:38:57.971:TMR6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):cached 5 rows, from 0 to 4 (5 total rows, 5 cached)
                  10:38:57.971:TMR6:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Cache for current criteria complete
                  10:38:57.971:TMR6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                  10:38:57.973:TMR6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
                  10:38:58.019:TMR6:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                  11:06:45.182:TMR6:DEBUG:ResultSet:isc_ResultSet_5 (created by: MyProjectsGrid):getRange(0, 4) satisfied from cache
                  11:06:45.359:TMR6:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0, 2) satisfied from cache
                  11:07:08.888:IFCS1:INFO:ResultSet:isc_PickListMenu_3:Creating new isc.ResultSet for operation 'TeamMember_fetch' with filterValues: {
                  }
                  11:07:08.890:IFCS1:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):setCriteria: filter criteria changed, invalidating cache
                  11:07:08.891:IFCS1:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):Invalidating cache
                  11:07:08.907:IFCS1:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0,8), cache check: 0,41 firstMissingRow: 0 lastMissingRow: 41
                  11:07:08.907:IFCS1:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange: guessing forward scrolling
                  11:07:08.908:IFCS1:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 8) will fetch from 0 to 75
                  11:07:08.908:IFCS1:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):fetching rows 0,75 from server
                  11:07:08.910:IFCS1:INFO:ResultSet:isc_ResultSet_18 (created by: undefined):creating auto-operation for operationType: fetch
                  11:07:08.911:IFCS1:INFO:ResultSet:isc_ResultSet_18 (created by: undefined):setCriteria: filter criteria changed, invalidating cache
                  11:07:08.911:IFCS1:INFO:ResultSet:isc_ResultSet_18 (created by: undefined):Invalidating cache
                  11:07:08.915:IFCS1:INFO:ResultSet:isc_ResultSet_18 (created by: undefined):creating auto-operation for operationType: fetch
                  11:07:09.065:IBLR2:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 8) satisfied from cache
                  11:07:09.105:IBLR2[E]:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 11) satisfied from cache
                  11:07:09.974:XRP2:INFO:ResultSet:isc_ResultSet_18 (created by: undefined):Received 5 records from server
                  11:07:10.042:TMR3:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):Received 5 records from server
                  11:07:10.043:TMR3:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):full length set to: 5
                  11:07:10.043:TMR3:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):integrating 5 rows into cache at position 0
                  11:07:10.043:TMR3:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):cached 5 rows, from 0 to 4 (5 total rows, 5 cached)
                  11:07:10.043:TMR3:INFO:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):Cache for entire DataSource complete
                  11:07:10.045:TMR3:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                  11:07:10.046:TMR3:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
                  11:07:10.082:TMR3:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                  11:14:52.905:TMR7:DEBUG:ResultSet:isc_ResultSet_5 (created by: MyProjectsGrid):getRange(0, 4) satisfied from cache
                  11:14:53.074:TMR7:DEBUG:ResultSet:isc_ResultSet_14 (created by: ProjectStakeholdersGrid):getRange(0, 2) satisfied from cache
                  11:15:57.777:KPR1:DEBUG:ResultSet:isc_ResultSet_17 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                  The developer console above seems to have the isc_PickListMenu_3 being reused for the new selectItem on the new form. Same dataSource, new resultSet.

                  Any ideas? I am going to try to put cachePickListResults:"false" on the ProjectManagerID formitem and see if that works.

                  Thanks,

                  Rick
                  Attached Files

                  Comment


                    #10
                    I applied cachePickListResults:"false" to selectItem ProjectManagerID. Then I applied it to every other TeamMember sourced selectItem. All to no avail.
                    12:30:37.994:MUP8:DEBUG:Log:********************** ProjectStakeholdersNewButton.Click
                    12:30:38.283:MUP8:DEBUG:Log:***END***END***END*** ProjectStakeholdersNewButton.Click
                    12:30:43.643:IFCS7:INFO:ResultSet:isc_PickListMenu_3:Creating new isc.ResultSet for operation 'excludeCurrentStakeholders' with filterValues: {
                    "ProjectID":101,
                    "CommunityID":101
                    }
                    12:30:43.644:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):setCriteria: filter criteria changed, invalidating cache
                    12:30:43.644:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Invalidating cache
                    12:30:43.652:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0,1), cache check: 0,37 firstMissingRow: 0 lastMissingRow: 37
                    12:30:43.652:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange: guessing forward scrolling
                    12:30:43.652:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) will fetch from 0 to 75
                    12:30:43.652:IFCS7:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):fetching rows 0,75 from server
                    12:30:43.663:IFCS7:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(1, 12) satisfied from cache
                    12:30:43.858:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Received 5 records from server
                    12:30:43.859:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):full length set to: 5
                    12:30:43.859:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):integrating 5 rows into cache at position 0
                    12:30:43.859:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):cached 5 rows, from 0 to 4 (5 total rows, 5 cached)
                    12:30:43.859:TMR1:INFO:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):Cache for current criteria complete
                    12:30:43.860:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                    12:30:43.861:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 1) satisfied from cache
                    12:30:43.892:TMR1:DEBUG:ResultSet:isc_ResultSet_15 (created by: isc_PickListMenu_3):getRange(0, 5) satisfied from cache
                    The operationId is still incorrectly applied to isc.PickListMenu_3 on ProjectForm.ProjectManagerID. And, then there is no real RPC fetch for TeamMemberID on ProjectStakeholderForm.TeamMemberID. The 5 records I see for that selectItem are incorrectly satisfied from a cache.

                    Time for lunch. How's the weather out there? Sunny here, but still too cold to lunch outside.

                    Hope you are having a good day.

                    Rick

                    Comment


                      #11
                      As previously stated, it seems you must have set clientOnly or cacheAllData:true on the TeamMember DataSource. As doc'd, that means there is a single request to the server to download all data, and no subsequent request ever goes to the server.

                      At that point, an operationId that does a special kind of join is obviously not going to do anything, since the server is never contacted at all.

                      Comment


                        #12
                        I appreciate you staying with me. I took all the page source pure JSP and changed ALL cacheAllData:"true" to "false" for ALL dataSources. Also, I double checked for the word 'client'. None found.

                        As an additional check, I took the fetch criteria for the troublesome TeamMemberID formItem and inserted them into an SQL statement made from the excludeCurrentStakeholders operationBinding. Then I ran it against the same database. It worked just fine and found only the 3 records it should.

                        It still makes no sense that the operationId is being applied to the wrong component. It is clear to me a problem exists with the ProjectManagerID formItem. It should never be using an operationId. That is the start of the problem. It ends with the TeamMemberID formItem. It is just a victim of the previous bad fetch.

                        I don't see what else could be wrong. I wonder if invalidating the cache explicitly is causing problems.

                        I cannot fit all my JSP into attachments. But, I will send it to you if you don't believe me.

                        What else can I investigate or inspect to get deeper into the problem?

                        Rick

                        Comment


                          #13
                          We don't magically flip on cacheAllData:true mode. If there's a [clientOnly] request showing up in the RPC tab, you're still enabling it. One way to have done so is if you did this:

                          Code:
                          cacheAllData:"false",
                          Which should be this instead:

                          Code:
                          cacheAllData:false,
                          Because any String is true in JavaScript. The latter unquoted value is a true boolean false.

                          If you think that this operationId confusion is actually due to a framework bug, we'd need a minimal test case demonstrating the issue.

                          Note minimal: *not* your entire .jsp and all dependencies.

                          Comment


                            #14
                            Good call. When I changed all my cacheAllData:"false" to cacheAllData:false now everything works as it should.

                            Unfortunately, I was only following the example of what the framework was generating from my XML.

                            Here is a dataSource XML file I have.
                            Code:
                            <DataSource ID="Category" serverType="sql" dataSourceVersion="1" dbName="PlanetProjectDB" schema="PUBLIC" tableName="Category" autoDeriveSchema="true">
                                <fields>
                                    <field name="CategoryID" type="integer" primaryKey="true"/>
                                    <field name="CommunityID" type="integer"/>
                                    <field name="CategoryName" type="text" length="16"/>
                                    <field name="CategoryTitle" type="text" length="64"/>
                                    <field name="Description" type="text" length="128"/>
                                    <field name="Created" type="datetime"/>
                                    <field name="Modified" type="datetime"/>
                                </fields>
                                <cacheAllData>true</cacheAllData>
                                <title>Category</title>
                                <titleField>CategoryName</titleField>
                                <pluralTitle>Categories</pluralTitle>
                                <generatedBy>v8.2p_2013-01-14/EVAL Deployment 2013-01-14</generatedBy>
                            </DataSource>
                            Here is the JSP generated.
                            Code:
                            isc.DataSource.create({
                                ID:"Category",
                                autoDeriveSchema:true,
                                dataSourceVersion:1,
                                dbName:"PlanetProjectDB",
                                schema:"PUBLIC",
                                serverType:"sql",
                                tableName:"Category",
                                fields:{
                                    CategoryID:{
                                        name:"CategoryID",
                                        primaryKey:true,
                                        type:"integer"
                                    },
                                    CommunityID:{
                                        name:"CommunityID",
                                        type:"integer"
                                    },
                                    CategoryName:{
                                        length:16,
                                        name:"CategoryName",
                                        type:"text"
                                    },
                                    CategoryTitle:{
                                        length:64,
                                        name:"CategoryTitle",
                                        type:"text"
                                    },
                                    Description:{
                                        length:128,
                                        name:"Description",
                                        type:"text"
                                    },
                                    Created:{
                                        name:"Created",
                                        type:"datetime"
                                    },
                                    Modified:{
                                        name:"Modified",
                                        type:"datetime"
                                    }
                                },
                                cacheAllData:"true",
                                title:"Category",
                                titleField:"CategoryName",
                                pluralTitle:"Categories",
                                generatedBy:"v8.2p_2013-01-14/EVAL Deployment 2013-01-14"
                            })
                            I am not inserting the quotes. The framework is.

                            I can will try to fix my problem by deleting the <cacheAllData>false</cacheAllData> statements in my dataSource definitions.

                            I suspect that the default value of null is being interpreted as false. You may need a counter test.

                            Thanks,

                            Rick

                            P.S. When I check the resulting JSP with JSHint or JSLint the lack of semi-colons generates lots of warnings. You may not care. I certainly don't very much.

                            Comment


                              #15
                              cacheAllData:"true" is fine, since the string value is still interpreted as boolean true. cacheAllData:"false" is not, and would be a useless setting, since it recapitulates the default. But this has been corrected for a long time anyway.

                              Comment

                              Working...
                              X