Creating new Class Library Packages/en

Aus expecco Wiki (Version 2.x)
Wechseln zu: Navigation, Suche


Expecco is a platform which can be extended. Similar to plugins and extensions as provided by exept, end-users can write add-on packages to extend the functionality and/or user interface. Expecco already includes a full development system for such extensions.

Classes, Namespaces, Packages and Class Libraries

Expecco's underlying runtime system is a Smalltalk/X system (ST/X) consisting of a virtual machine and a number of classes which are organized into class libraries. Class libraries can be loaded either at startup time, or dynamically (explicit) at runtime. For this, classes are organzed into so called packages which are loaded together. In addition to additional classes, packages may also contain so called extension methods, which may add or replace individual methods to classes in other packages.

In addition to the package organization, classes may also be placed into their own namespace. Packages and namespaces are two different attributes of a class (in contrast to eq. Java or C#, where the package attribute is also used as the namespace prefix). This makes it possible in ST/X, to generate packages which add or modify functionality to other packages, down to the granularity of a single method.


For the development of extensions, the builtin class browser (also called System Browser) is used, which is documented in the ST/X online documentation. The browser is opened via "Mainmenu" -> "Extras" -> "Tools" -> "Class Browser".

Plugin API


Dynamic Loading during the Testrun (explicit loading)

In an elementary action block, use one of the following code fragments:

  • Smalltalk loadPackage:nameOfPackage
    loads a package by package-name. The package must be found as package folder under the expecco "packages" folder, or as a compiled class library in the expecco binary folder.
  • Smalltalk fileIn:nameOfSourceFile
    loads a single class file by file-name. The file can contain the source code of a package, single class, extension method(s) or a script to be executed. Typically, such files are generated via the class browser's "File Out" menu function.

as an alternative, use one of the utility actions found in the "Reflection Library":

  • Load Package
    takes the name of a package (given as a package identifier, such as "exept:expecco/plugin/selenium") and tries to load it. This is a wrapper block on the above "loadPackage" call.
  • Load File
    takes a pathname and tries to load it. This is a wrapper block on the above "fileIn" call.

Automatic Loading when a Suite is Loaded

Preloading at expecco Startup (via Command Line)

Preloading at expecco Startup (by Changing the Startup Script)

Tutorial Example: An additional Math Function

Tutorial Example: A Simple Protocol Implementation

Tutorial Example: A Device Interface

Tutorial Example: An expecco Extension Plugin

Copyright © 2014-2016 eXept Software AG