Find out more about new features and improvements in the Fabasoft app.ducx 2016 June Release.
The obsolete keyword can be used to disable enumeration entries. In the user interface, drop-down lists for enumeration values do not contain disabled entries.
Example |
objmodel APPDUCXSAMPLE@200.200 } |
In rare cases it is necessary to specify some other attributes for the type. This is accomplished by using generic assignments before the block of enumeration values.
Example |
objmodel APPDUCXSAMPLE@200.200 ST_DESTROYER = 100, } |
An expression property is a string list property that stores the expression and has additional information regarding the evaluation context.
Example |
objmodel APPDUCXSAMPLE@200.200 class StatusLog : BasicObject { |
Syntax |
acl reference { audience = { }; rights = []; } } |
Access control lists (ACLs) are used to specify the access rights of a user to a given object. An access control list can assign different lists of access types to different user groups.
The acl keyword is used to define an access control list. It must be followed by a reference and curly braces.
Within an acl block, there is a sequence of ace, specifying a unique set of access rights to a list of user groups, called audience. In the resulting access control list there is a line for each user group and the specified access types.
Each audience entry can define something that depends on the user, on a group the user belongs to and on the domain where the user is located. These three possibilities of specifying the user are modelled with the keywords user, group and domain. For each of these keywords, there are different possibilities to define the matching user group.
If one or more of the keywords are omitted, the line is filled up with default values.
Example |
orgmodel APPDUCXSAMPLE@200.200 acl SampleACL { audience = { user SysAdm; }; rights = [AccTypeRead, AccTypeChange]; } ace { audience = [ { user ACLUSER_DEFAULT; group ACLGROUP_OWNER if parent; domain ACLDOMAIN_DEFAULT; }, { } ]; rights = [AccTypeRead]; } } |
Audience elements can also be declared as constants and reused in all ACLs.
Example |
orgmodel APPDUCXSAMPLE@200.200 const audience[] AdministrationAudience = { user = SyAdm; } acl SampleACL { audience = AdministrationAudience; rights = [AccTypeRead, AccTypeChange]; } } |
The expression tester works on all files in the project, either for expression files with the extension ducx-xp or inside of any expression element.
The expression can be executed by the current web service by selecting “Run as” > “Expression” from the context menu.
The result of the expression is sent to the expression tester console.
To use short references imports have to be done as in all other domain specific files, the context is the current project.
Extending properties can now be done by using the keyword extend, followed by the property. Using this syntax, object pointer properties can be extend in a simple way.
Example |
userinterface APPDUCXSAMPLE@200.200 extend property admobjchildren { } |
The forms binding can now specify more than one use case in a single binding block.
Example |
userinterface APPDUCXSAMPLE@200.200 extend class Order { |
The condition in forms bindings can now specified by using the condition keyword.
Example |
userinterface APPDUCXSAMPLE@200.200 extend class Order { condition = expression { coort.GetCurrentUserRolePosition() == #SysAdm; } } OrderUserForm; |
There are some additional quick fixes available:
There are some additional templates for the object model:
There are some additional warnings generated:
There are some additional errors generated:
We use a new formatter to format the source code. The new features include