1.0.6 • Published 8 months ago

caipig_workflow v1.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

前往npm

https://www.npmjs.com/package/caipig_workflow?activeTab=readme

新建项目并初始化

  1. 创建vite项目
npm init vite-app 项目名称
  1. 安装依赖,初始化项目
cd 项目
npm install

使用说明

  1. 安装依赖
npm i caipig_workflow
  1. 在vue文件中引入依赖
<template>

</template>

<script lang="ts" setup>
import {workFlow} from 'caipig_workflow/index.ts'

</script>

<style scoped>

</style>

目录说明

utils    
├── config.ts             // 全局配置文件
├── event.ts              // 事件(开始事件 || 任务事件 || 结束事件)
├── gateway.ts            // 网关(并行网关 || 互斥网关)
├── index.ts              // 组件入口
├── listener.ts           // 监视器(开始监视器 || 任务监视器 || 结束监视器...)
├── node.ts               // 流程节点(初始化、构建、执行)
├── utils.ts              // 工具类(生成uuid、遍历流程节点)

流程定义说明

流程工厂:负责流程的定义、构建、执行

// 获取一个流程定义工厂实例
workFlow.WorkFlowFactory.getInstance()

// 构架下一节点信息
workFlow.WorkFlowFactory.getInstance().appendNextNode(下一节点)

// 结束构建流程节点
workFlow.WorkFlowFactory.getInstance().builder()

// 执行定义的流程
workFlow.WorkFlowFactory.getInstance().start()

下一节点:组装父节点跳转到下一节点的判断条件,以及下一节点的内容

// 获取一个下一节点的实例
workFlow.NextNode.getInstance(跳转条件,子节点)

// 获取一个下一节点的实例
workFlow.NextNode.getInstance(
	/**
	 * 获取跳转到下一节点的条件监视器实例
	 *
	 * 支持类型:
	 *      1.方法类型
	 *      2.表达式类型
	 */
	// workFlow.FunctionConditionListener.getInstance(),
	workFlow.ExpressionConditionListener.getInstance(),
	
	workFlow.WorkFlowFactory.getInstance()
)


注意:如果跳转下一节点的判断条件执行结果返回为true,则跳转到下一节点,否则不执行

事件:开始事件、结束事件、任务事件

在这里事件用于充当节点使用!!!

// 获取一个开始事件实例
workFlow.StartEvent.getInstance()

// 获取一个结束事件实例
workFlow.EndEvent.getInstance()

// 获取一个任务事件实例
workFlow.TaskEvent.getInstance()

网关:并行网关、互斥网关

// 获取一个并行网关实例
workFlow.ParallelGateway.getInstance()

// 获取一个并行网关实例,并添加两个个于此连接的节点
workFlow.ParallelGateway.getInstance().appendGatewayListener(跳转判断条件,节点)
workFlow.ParallelGateway.getInstance().appendGatewayListener(workFlow.TaskListener.getFunctionTaskListener(),workFlow.WorkFlowFactory.getInstance())

// 获取一个互斥网关实例
workFlow.ExclusiveGateway.getInstance()

// 获取一个互斥网关实例,并添加两个个于此连接的节点
workFlow.ExclusiveGateway.getInstance().appendGatewayListener(跳转判断条件,节点)
workFlow.ExclusiveGateway.getInstance().appendGatewayListener(workFlow.TaskListener.getFunctionTaskListener(),workFlow.WorkFlowFactory.getInstance())

注意:appendGatewayListener(),如果添加的监视器类型为workFlow.TaskListener.getFunctionTaskListener()或者workFlow.TaskListener.getExpressionTaskListener()才会为建立该网关 ---> 下一节点连接(多个workFlow.TaskListener...则建立多个连接),否则不会建立连接

构建流程

定义一个简单的流程,并执行该流程!

定义一个简单流程:开始节点 ---> 任务节点 ---> 结束节点
<template>

</template>

<script lang="ts" setup>
import {workFlow} from 'caipig_workflow/index.ts'


// 获取一个流程定义工厂实例(用于构建流程)
const workFlowFactory = workFlow.WorkFlowFactory.getInstance()

// 链式编程:构建下一节点的信息
// workFlowFactory.appendNextNode(下一节点信息)

workFlowFactory.appendNextNode(
	/**
	 * 获取一个下一节点的实例
	 *
	 * 入参:
	 *  1.条件监视器:方法类型、表达式类型
	 *           1.1 返回结果未true,则跳转到下一节点
	 *           1.2 返回结果未false,则不跳转
	 *  2.节点
	 */
	workFlow.NextNode.getInstance(
		workFlow.FunctionConditionListener.getInstance(null,() => {
			console.log('条件监视器:返回true则走到下一节点,否则不执行')
			
			return true;
		}),
		
		// 不传递传输则默认为start类型的节点!!!!!
		// workFlow.WorkFlowFactory.getInstance()
		
		workFlow.WorkFlowFactory.getInstance(
			
			// 获取一个任务事件的实例
			workFlow.TaskEvent.getInstance('执行指定任务...')
				
				// 添加一个监视器
				.appendEventListener(
					
					// 添加一个前置监视器
					workFlow.StartListener.getFunctionStartListener(null,() => {
						console.log('前置监视器...')
					})
				).appendEventListener(
				
				// 添加一个后置监视器
				workFlow.EndListener.getFunctionEndListener(null,() => {
					console.log('后置监视器...')
				})
			).appendEventListener(
				
				// 添加一个任务监视器
				workFlow.TaskListener.getFunctionTaskListener(null,() => {
					console.log('任务监视器...')
					console.log('执行任务中...')
				})
			)
		)
	)
)


// 构建结束
workFlowFactory.builder()


// 执行定义的流程
workFlowFactory.start();
</script>

<style scoped>

</style>
1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago