2022 April Release

app.ducx Organizational Structure LanguagePermanent link for this heading

This chapter outlines organizational structure language features that are relevant for Folio developers.

An organizational structure can be represented by using abstract and concrete structure elements. These organizational structure elements can be used for assigning access rights and for defining actors in a workflow.

The following abstract elements can be used to model an organizational hierarchy independently of users and groups:

  • organizational units define abstract areas of an organization (e.g. "manufacturing", "sales", "department")
  • positions are used to split up organizational units into functional tasks and areas of responsibility (e.g. "production manager" in organizational unit "manufacturing", "customer representative" in organizational unit "sales").

The benefit of abstract elements is that you can model the organizational structure without considering actual users and groups. The concrete elements of the organizational structure – users and groups – can be linked to the abstract elements when your software component is deployed to the customer.

In a customer installation, groups can be linked to abstract organizational units, and users can be assigned to groups. A user can be member of one or more groups. Moreover, roles can be assigned to each user. A role is defined as the position that a user can occupy within a given group.

For instance, assume that Jane Bauer is the manager of the Sales business unit. This can be modeled by assigning a role to user Jane Bauer that is comprised of position “Manager” and group “Sales”. Furthermore, the “Sales” group must be assigned to organizational unit “Business Unit”.

Note: Users and groups are always created in the customers’ domains whereas the abstract elements, positions and organizational units, are defined using the app.ducx organizational structure language, and shipped with your software component.

Defining a PositionPermanent link for this heading

Syntax

position reference;

The position keyword is used to define a position. It must be followed by a reference and a semicolon.

Example

orgmodel APPDUCXSAMPLE@200.200
{
  import COOSYSTEM@1.1;

  position Clerk;
  position DeptManager;
  position DeptSecretary;
}

Defining an Organizational UnitPermanent link for this heading

Syntax

orgunit reference {
  positions = {
    position,
    ...
  }
}

The orgunit keyword is used to define an organizational unit. It must be followed by a reference and curly braces.

The positions keyword allows you to assign positions to an organizational unit. Multiple entries must be separated by commas.

Example

orgmodel APPDUCXSAMPLE@200.200
{
  import COOSYSTEM@1.1;

  orgunit OrderProcessing {
    positions = {
      Clerk,
      DeptManager,
      DeptSecretary
    }
  }
}

Extending an Organizational UnitPermanent link for this heading

Syntax

extend orgunit reference {
  positions = {
    position,
    ...
  }
}

With the extend orgunit keywords, you can add positions to an organizational unit that is part of another software component.

Example

orgmodel APPDUCXSAMPLE@200.200
{
  import COOSYSTEM@1.1;
  import FSCFOLIO@1.1001;

  extend orgunit ManagementOU {
    positions = {
      DeptSecretary
    }
  }
}

Defining an Access TypePermanent link for this heading

Syntax

acctype reference {
  finalform = booleanvalue;
  sequence = sequencenumber;
  symbol = symbol;
}

Access types are used to secure read, change and execute access to properties or use cases. If a property or use case is protected by a custom access type, the user must be granted this access type by the object’s ACL in order to access the property or to invoke the use case.

Note: Software component COOSYSTEM@1.1 already provides a set of access types that can be reused for protecting your properties and use cases.

The acctype keyword is used to define an access type. It must be followed by a reference and curly braces.

Within an acctype block, the finalform keyword is used to specify whether or not a user is able to access closed objects with this access type. If finalform is set to false, a user cannot access objects in final form with this access type.

The sequence keyword is used for defining the sequence number of the access type within the software component. If multiple access types are defined by a software component, the sequence number can be used for determining the order in which they are displayed in the ACL editor.

The symbol keyword is used for assigning a symbol to an access type. The symbol assigned to an access type is displayed in the ACL editor.

Example

orgmodel APPDUCXSAMPLE@200.200
{
  import COOSYSTEM@1.1;

  acctype AccTypeApproveOrder {
    finalform = true;
    sequence = 1;
    symbol = SymbolApprove;
  }
}