A Process Model is a sum of an executable module and all its resources including any imported modules: in PDS, it is not represented explicitly since any executable module can become a model but also be imported into other modules, potentially also executable one.
A GO-BPMN Project is by default created with the Standard Library and the modules import the library by default as well. On design time, modules can be created only in Projects. To further organize the content of projects and modules, you can create folders in Projects and Module: these are not uploaded to the server.
A Project is a directory and serves only for organization of your sources: they are not influence semantics of your model and are not uploaded to the LSPS Server. If you decide to create other projects to organize your resource, by default, you will not be able to use resources from one project in another: to be able to access stuff from another Project, you need to explicitly enable the access by referencing it. We will get to referencing later. Let us create and examine a GO-BPMN project now.
Modules are similar to java jar files. They follow a strict structure and have dependencies, called imports. A Module must be in a Project and all resources must be encapsulated in a Module. Note that what gets uploaded to the server is a Module: a Project exist merely on design time.
A Module holds most resources: processes, variables, custom data types, queries, functions, etc. Ideally it should be a reusable self-sustainable collection of resources. When you upload a module nothing much happens: the resources are simply uploaded to a repository. However, if the Module is executable, you can then instantiate it. Marking a module as executable is basically like marking a method as main:
it signalizes that this module is where your execution starts. Unlike with main, you can have multiple executable Modules in one Module. How so? You can import them into other Modules: when you run your executable module any other imported executable modules are run as well. Note that you can create folders in Projects and Module to organize your resources. Their behavior is the same as the Projects behavior: on upload, they are ignored.
Let's create an executable module:
Create another GO-BPMN Project with a Module and import the myMainExecutable module into your new module: you will need to reference the project.