2020 November Release

Fabasoft app.ducx 2020 November ReleasePermanent link for this heading

Find out more about new features and improvements in the Fabasoft app.ducx 2020 November Release.

Released for Eclipse 2020-09Permanent link for this heading

The app.ducx plugin can be used with Eclipse 2020-09.

Password TypePermanent link for this heading

The keyword password can be used to declare parameters, properties or fields.

Example

class Info {
  password infopwd;
}

Properties of this type are automatically filled with:

  • get = AttrPrivateGet
  • set = AttrPrivateSet
  • copy = NoOperation

Simplified Layout DescriptionPermanent link for this heading

The keyword row in the layout definition of form pages can be omitted if only one control is listed.

Information About Obscured BehaviorsPermanent link for this heading

Since it is possible to specify behaviors in property definitions, behaviors in the layout could hide these expressions accidentally. To prevent this, every hiding behavior is tagged with an information message. This applies to all behaviors with expressions:

  • accset
  • accsetline
  • change
  • changeable
  • controloptions
  • controlstyle
  • mustbedef
  • searchchange
  • validate
  • visible
  • weight

Get and Set ExpressionsPermanent link for this heading

In property definitions it is now possible to specify expressions for getting and setting of property values. For these expressions an action with an implementation on object is generated.

Example

Class DemoClass {
  string demostring volatile(tx){
    get = expression {
      if (!value) {
        value = “empty”;
      }
    }
    set = expression {
      value = strhead(value, 10);
    }
  }
}

Declaration of Dictionary MembersPermanent link for this heading

The keyword assume can also be used to declare the types of dictionary entries, especially the cardinality.

Example

usecase UpdateUser(dictionary datainput) {
  variant User {
    expression {
        assume string datainput.name;
        cooobj.objname = name;
        assume integer[] datainput.weights;
    }
  }
}

Cached Action CallsPermanent link for this heading

Actions calls can be marked as cacheable for the current transaction with actcacheable. If set to true, the action call results are reused

  • if the transaction is equal,
  • if the object and the action are equal,
  • if the in and inout parameters are equal.

A transaction commit or abort clears the cache.