Creating custom resource types

You can create custom resource types. They have their own diagrams where you can add parameters, statecharts, functions, etc. You can select custom animation for the resource types that you create and easily make changes to those animation figures.

To define a custom resource type

  1. Drag the Resource Type from the Process Modeling Library palette into the graphical editor.

  2. The New agent dialog box will be shown.
  3. On the first page of the wizard, specify Agent type name.

  1. Choose the animation for the resources of this type. If you want the resource units to be animated both in 2D and 3D, choose 3D and select 3D model from the list below, otherwise select 2D and choose from another (shorter) list. If no shapes satisfy your needs, just choose None. You can draw animation of the resource on its graphical diagram later.

  2. Finished with choosing the animation, click Next to proceed to the next step.
  3. Specify the parameters for this resource type. Click in the Parameters list to create new parameter. Having selected a parameter in this list, you can set its name, type, and initial value using the controls in the right panel. To remove a parameter from the list, click the button below.

  4. Click Finish.

The graphical diagram of the created resource type will open. You will see there the chosen resource unit animation (located in the axis origin) and the parameter(s) you have defined in the wizard.

Now you can specify this resource type in the flowchart blocks parameters, for instance, in ResourcePool properties:

Accessing parameters of custom resources

Since custom resources are derived from agent type, it is possible to enrich them with custom variables, parameters, functions, and other elements.

When using a custom resource in a process flow (for example, upon starting processing the resource via the Seize block), you may need to access these elements in the context of the resource being used. In this case, you cannot directly access the resource without specifying its type explicitly.

Let’s say we have a custom resource pool named Cashiers that consists of multiple resource instances: the Cashier agents. On the Cashier agent’s diagram, there is the isBusy Boolean parameter whose value is false by default — but we want to set it to true upon starting the resource’s utilization.

To do this, specify the following as the On seize unit action in the Actions section of the Seize block:

((Cashier)unit).isBusy = false;

Note that we address the agent type — Cashier, rather than the resource pool Cashiers itself.

Use a similar approach to access other elements of a custom resource type to modify their values, execute functions, and so on.

To learn more about the parameters of custom agents, see the following article: Accessing parameters of custom agents in the flowchart block parameters.