Document list of CabloyJS's own workflow engine

Document list of CabloyJS's own workflow engine

## Document list

CabloyJS comes with `workflow engine` documentation has been sorted out, everyone is welcome to watch and chat

  -[Demo: CMS approval workflow](
  -[Unit Test Case Collection](
-Process definition
  -[Basic Concepts](
  -[JSON Specification](
  -[listener specification](
  -[listener specification-user task](
-Process instance
  -[Appearance Bean Components](
  -[Security Sandbox](
  -[Process Search](
  -[Environmental Object](
-Transfer line
  -[Environmental Object](
  -[Sequence Flow](
-Active node
  - basic concept
    -[Environmental Object](
  -Start event
    -[Empty start event](
    -[Timed start event](
    -[Atomic Drafting Start Event](
  -End event
    -[Null End Event](
    -[Empty Event](
    -[Service Activities](
    -[User Task Activity](
-User tasks
  -[JSON Specification](
  -[Appearance Bean Components](
  -[Task Search](
  -[Environmental Object](
-Advanced (to be continued...) 
## What is CabloyJS's own workflow engine
As we all know, as a back-end development language and operating environment, NodeJS is good in everything, just a `NodeJS workflow engine`. CabloyJS 4.0 focuses on the development of `NodeJS Workflow Engine`, and as a built-in basic core module, it further expands the application scenarios of NodeJS in the back-end, providing basic support for the in-depth research and development of various business business logics

## Features of NodeJS Workflow Engine

1. Easier configuration: Use `JSON` to configure the process definition, bid farewell to the cumbersomeness of XML configuration files
2. Process definition: support historical version, support enable/disable
3. Clearer architecture: 3.core modules are used to implement the architecture of the workflow engine with a layered mechanism, so that the workflow is no longer mysterious, and the source code no longer overlaps.

|Module name|Description|
|a-flow|Process definition, process instance|
|a-flownode|Process node (active node)|
|a-flowtask|Process task|

4. Support `Business Process` and `Approval Process` 
5. Combined with the `atomic data life cycle`, a set of `approval workflow` based on atomic data is built-in. See: [Atomic stage (data life cycle)](	
6. Combined with `form verification`, it supports to configure the `read field permissions` and `modify field permissions` of different process nodes. See: [Form validation](
7. The workflow logic can be customized through the `AOP` mechanism. See: [AOP](
8. The workflow logic can be customized through the `Listener` mechanism. See: [listener specification](
9. Open architecture supports more customized development of `process nodes`
10. Contains a lot of `test-driven` code, you can quickly get started using workflow

## Contrast with `Activiti`

`Process definition` is the soul of `workflow engine`. A reasonable `process definition` specification should consider both the convenience of use and the scalability of functional features.

`Activiti` is undoubtedly the benchmark of the workflow engine in the Java language field. According to the `BPMN2.0` specification, the `XML` format is used to define the workflow

### 1. JAVA + BPMN + XML

The advantage of `BPMN + XML` is that the standard is unified, which matches the development tone of the `JAVA` language. Of course, the disadvantage is that it is `cumbersome`. If it is separated from the `graphical editing tool`, it is very inconvenient to use handwritten XML definition

### 2. JS + class BPMN + JSON

After repeated evaluations and trade-offs, CabloyJS decided to still refer to the feature set of the `BPMN specification`, but use the `JSON` format for definition. Although it belongs to a custom format, it is in line with the tonality of the `JS` language. The advantages are `simple, easy to write, easy to read`, and also have excellent `portability`

## Related Links

* [Official Website:](
* [GitHub:](
Reference: CabloyJS comes with a document list of workflow engine-Cloud + Community-Tencent Cloud