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

-Introduction
  -[Introduction](https://cabloy.com/zh-cn/articles/flow-introduce.html)
  -[Demo: CMS approval workflow](https://cabloy.com/zh-cn/articles/ddda3ea8638d4d2b88fb57df7ed67107.html)
  -[Unit Test Case Collection](https://cabloy.com/zh-cn/articles/b8887f42a6bd4da8a6f1f1b299beefe7.html)
-Process definition
  -[Basic Concepts](https://cabloy.com/zh-cn/articles/7fe5e138dd514e4987826cd498bc3913.html)
  -[JSON Specification](https://cabloy.com/zh-cn/articles/fe296ad2d9d741d0b7001ed74d43633e.html)
  -[listener specification](https://cabloy.com/zh-cn/articles/09f72f0d29e34ff1a3c8cef868c6668d.html)
  -[listener specification-user task](https://cabloy.com/zh-cn/articles/1021fdd4ab174226a616f060c480f7d4.html)
-Process instance
  -[Appearance Bean Components](https://cabloy.com/zh-cn/articles/d4254a2c7a624015b4418f88baf5e7eb.html)
  -[Security Sandbox](https://cabloy.com/zh-cn/articles/a7b64dea056f4e02a745be4834e16584.html)
  -[Process Search](https://cabloy.com/zh-cn/articles/7ee5d2c03f6b44859f6213f1bbdb4f05.html)
  -[Environmental Object](https://cabloy.com/zh-cn/articles/24eefd1767ec41719fdac61c84cec567.html)
-Transfer line
  -[Environmental Object](https://cabloy.com/zh-cn/articles/58a7ea022bcc4a989c998278d8148231.html)
  -[Sequence Flow](https://cabloy.com/zh-cn/articles/7de9fbf49f794cee90fe62a544ee9791.html)
-Active node
  - basic concept
    -[Environmental Object](https://cabloy.com/zh-cn/articles/3b08cfc69dfe4776a6d536283e5bb41f.html)
  -Start event
    -[Empty start event](https://cabloy.com/zh-cn/articles/75c0b584a1d546fba930d9185a95fadf.html)
    -[Timed start event](https://cabloy.com/zh-cn/articles/162edbd052c54fe89c6828d22480b723.html)
    -[Atomic Drafting Start Event](https://cabloy.com/zh-cn/articles/ed28d24df228468a9c4d9b675d207003.html)
  -End event
    -[Null End Event](https://cabloy.com/zh-cn/articles/bd7ff950ad1d4a9aa9a93df409faad97.html)
  -Activities
    -[Empty Event](https://cabloy.com/zh-cn/articles/42852c94708d473ba99a9f0689d4dbf0.html)
    -[Service Activities](https://cabloy.com/zh-cn/articles/962ed51ed0b44245b3e1a40f3e32fa7f.html)
    -[User Task Activity](https://cabloy.com/zh-cn/articles/52f8e206b6e342a98c0afd57b34f8453.html)
-User tasks
  -[JSON Specification](https://cabloy.com/zh-cn/articles/e7a47fa53d5d4d909de22fa7654b81fc.html)
  -[Appearance Bean Components](https://cabloy.com/zh-cn/articles/3d2ffe6d14a94cf293ba5c60d46d6b24.html)
  -[Task Search](https://cabloy.com/zh-cn/articles/ae92829d783943eba63afb93a46810e6.html)
  -[Environmental Object](https://cabloy.com/zh-cn/articles/9678ca4df98341d38d7dd5ee47343348.html)
-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)](https://cabloy.com/zh-cn/articles/atom-stage.html)	
6. Combined with `form verification`, it supports to configure the `read field permissions` and `modify field permissions` of different process nodes. See: [Form validation](https://cabloy.com/zh-cn/articles/form-validation.html)
7. The workflow logic can be customized through the `AOP` mechanism. See: [AOP](https://cabloy.com/zh-cn/articles/aop.html)
8. The workflow logic can be customized through the `Listener` mechanism. See: [listener specification](https://cabloy.com/zh-cn/articles/09f72f0d29e34ff1a3c8cef868c6668d.html)
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: https://cabloy.com/](https://cabloy.com/)
* [GitHub: https://github.com/zhennann/cabloy](https://github.com/zhennann/cabloy)
Reference: https://cloud.tencent.com/developer/article/1774484 CabloyJS comes with a document list of workflow engine-Cloud + Community-Tencent Cloud