An open API service indexing awesome lists of open source software.

https://github.com/unadlib/marten

A Process Controller Library
https://github.com/unadlib/marten

e2e-tests test-runner testing-tools

Last synced: about 1 year ago
JSON representation

A Process Controller Library

Awesome Lists containing this project

README

          

# marten
A Process Controller Library.

#### Solution Goal

* High-quality reusable code by steps.
* Maintainable decoupled process steps.
* Process steps runner with multiple granularity control.

#### Features
* Composable
>Separate combination of steps.
* Inheritable & extensible
>Support for object-oriented programming.
* Customizable
>At run time, the arguments of any step are passed, the steps execution sequence can be customized, and the combination of any child steps is made.
* Controllable
>The execution granularity and position of the free control steps.
* Context by arguments
>Merge the results of all step execution through context passing.

## APIs
- [function: generate](#function-generate)
- [function: createProcess](#function-createProcess)
- [class: Steps](#class-steps)
* [steps.reset()](#stepsreset)
* [steps.skip([step])](#stepsskipstep)
* [steps.exec()[return Promise]](#stepsexec)
* [steps.execTo(step)[return Promise]](#stepsexectostep)
* [steps.execBefore(step)[return Promise]](#stepsexecbeforestep)

#### function: generate
If you need to control every step of the process, it is a useful process middleware.

```javascript
const createProcess = generate({
async before({
step,
context,
options,
}) {
console.log(step.name);
},
async after({
step,
context,
options,
}) {
console.log(step.name);
}
});
```

#### function: createProcess
By sequence, it can be redefined the combined sequence steps for steps runner.

```javascript
(async (context) => {
const process = createProcess(
Login,
Navigation,
Setting,
MakeCalls,
)
const instance = process(context);
await instance.execTo(Navigation);
await instance.execBefore(Setting.callingSetting);
await instance.exec();
})();
```

#### class: Steps
Steps Runner can be controlled the operation of the current sub steps by free.

##### steps.reset()

Reset all steps ignore in the process and initialize process.

##### steps.skip([step])
- `step` <`function`>

Set skip some steps in the process.

##### steps.exec()
- **return** <`Promise`>

Execute the process by set sequence and skip setting.

##### steps.execTo(step)
- `step` <`function|class`>
- **return** <`Promise`>

Execute steps until a step position.

##### steps.execBefore(step)
- `step` <`function|class`>
- **return** <`Promise`>

Execute steps before a step position.