Issue 31071  —   Compiler does not give error for weboperation defined in entity level trigger

Status:   Planned for resolution in 10.3.01

Solution available in patch(es):      G101

Description:

 Summary:
 The compiler does not give error for weboperation inadvertently defined in
 entity level trigger and in the resulting javascript parameters have been
 removed. Expected are compilation errors for the weboperations in the entity
 level triggers.

 Environment:
 + Uniface: Uniface Nine
 + Operating System: OS independent
 + Database: DBMS independent

 Symptoms:
 The compiler does not give an error for a web operation inadvertently
 defined in entity level trigger and in the resulting javascript parameters
 have been removed.
 Expected are compilation errors for the weboperations in the entity
 level triggers: 'weboperation' should currently only be used in the
 components operations trigger as there is no way of being
 able to call an operation at any other level than the component
 instance.

 To enable collection and occurrence operations there would have to be a method
 for calling the operation on the correct entity or occurrence.

 In client server there is the concept of a handle that references these
 objects directly so a construct like $collhandle(XXX)->operation()
 would point to a precise operation in a precise place or occurrence.

 There is no web equivalent.

 An example:
   In the DSP component there is the following proccode:
     - Collection Operations of entity dument:

       weboperation testjsco
         params
           string  pIndata : IN
         endparams

         javascript
           alert(pIndata)
         endjavascript
       end

     - Occurrence Operations of entity dument:
       weboperation testjsoo
         params
           string  pIndata : IN
         endparams

         javascript
           alert(pIndata)
         endjavascript
       end

    - Component level OPERATIONS trigger
      weboperation testjsop
        params
          string  pIndata : IN
        endparams

        javascript
          alert(pIndata)
        endjavascript
      end

 Compiling this DSP results in the javascript
   /*This source is generated by UNIFACE*/
   var _uf_clientside = _uf_clientside || {};
   _uf_clientside.TESTSCRIPT = {
   testjsop:function(pIndata){
   alert(pIndata)
   },
   testjsoo:function(){
   alert(pIndata)
   },
   testjsco:function(){
   alert(pIndata)
   }
   }

 The in parameter pIndata has disappeared for the entity level triggers

Workaround:

 Define all weboperations in the component level operations trigger.

Notes: