Last update PvD
Process Model
When defining or describing processes, or collecting information about processes, there are a lot of aspects with varying relevance to characterise that process. It is not obvious how various aspects should be categorised.
This document should provide some guidelines with respect to categorisation on interfaces. You may choose to extend it with a (sub-)categorisation suited for your environment.
The term Process in this context stands for any process, i.e. an automated process (i.e. without human interaction), a manual process, or a mix of both.
Every process obviously requires input, and produces output (one might say it converts input into output). However, a process relies on services or facilities to carry out its task; these are usually also processes but at a lower level of abstraction. And, in turn, our main process may provide services to one or more processes at a higher level of abstraction. So, the basic process model can be depicted like:
Higher level ↓ ↑ | ||
Input → | Process | → Output |
↓ ↑ Lower level |
The main process interfaces are:
As the input and output interfaces are self-explanatory, we will elaborate the Higher Level and Lower Level interface categories. Note that:
The main process has its own logic, but to carry out its tasks it needs the lower level mechanism. The process(es) at the lower level provide resources –services and/or facilities– to our main process, and forms the infrastructure for all processes at the level of our main process.
Examples of lower level infrastructure:
Sometimes the distinction between Input and Resources (infrastructure, non-human resources) is not very clear; for example tools which are used-up (e.g. expense material like stationary).
Basically Input is consumed and Resources are temporarily allocated.
However, that often depends on how logistics are arranged.
Some straightforward reasoning like "when it is on the Bill-Of-Material, it is Input" may help to categorise.
It also occurs that some part is used both as an Input component and as a tool (Infrastructure), for example a software platform.
Note that the Lower Level Interface is commonly ignored as an interface.
There are 2 types of higher level interfaces:
Both Management and Control are used to control the operation of a process. Management and Control are doing a similar job, however at distinct levels of abstaction. Control, also indicated as Command & Control, is directly controling a process, whereas Management is monitoring another process from a higher level of abstraction (more from a distance). More specific:
For reliable functioning of a system (of processes), management is required (basic inability to establish the disfunctioning of a process by itself, e.g. looping or crashing). For immediate response, decisions must be made by local control.
When a process needs to run (nearly) continuously, it is hard to make any changes to the way it operates. With a normal processing, you can modify (start-up) parameters before you activate a particular program, but this process is already running. As it is running continuously, it probably is performing a vital role in the system, so forcing it to stop and restarting it again is highly undesirable.
Such a process needs a management process; it allows to interact with the continuous process without disturbance to the normal process flow. The interaction is probably based on messages which shouldn't be a problem as the continuous process is most likely processing messages anyway. Of course processing of messages from the management process should have priority over normal processing, and the managed process should refuse management messages from others than the authorised management process.
Typical interactions are to start or stop logging, start/stop tracing, modifying parameters, etcetera. Or even to (hot/cold) restart or reload the process (the continuous process should try to do so with minimal disturbance to normal processing.
Of course the continuous process may send unsollicited messages to the managing process. But it should never rely on the managing process being active.
A clear example of such a process is a routing function.
A single process –or job– may have various states. They are indicated below, with the potential transitions.
Undefined | job does not exist yet | ||
↓ define | exact job is determined | ||
Defined | ← | ← | job is defined, but no plan for execution yet |
↓ submit | ↑ | schedule/enqueue/plan the job | |
Scheduled | ↑ | job is scheduled for execution (e.g. included in a planning, or entered in a queue) | |
→ cancel | Cancelled | job was scheduled but hadn't yet started; now removed from schedule (potentially back to 'defined') | |
↓ run | job is started | ||
Active | job is active (i.e. processing) | ||
→ suspend | Suspended | active job is halted (frozen, paused) | |
← resume | suspended job continues execution | ||
↓ terminate, abort | ↓ | job terminates; either by itself, but potentially aborted (forced ending) | |
Completed | active job has finished, potentially not as desired: abnormal completion, e.g. failed/crashed or aborted |
When a job is Active, processing may be temporarily halted as the job has to wait for an event (in computer processing typically I/O). This is however still considered Active in this context.
Basic computing function types are:
Not all components need to have all three Basic Computing Functions present; a module typically fulfils a single Basic Computing Function.
=O=