Dart 自动化流程引擎的实现

Dart 自动化流程引擎的实现

具体的实现我还没有想好,但是整体有一个大概的核心思路。这个自动化流程引擎其实就是想做Dart版本的Fastlane。

上图是自动化流程引擎大致的技术架构图,下面我来仔细的进行说明一下。

流程节点

代表流程中的不同的节点,分别是有执行程序构成。也就是Fastlane所谓的Action,后续我也会偏向于这方便的设计。

这个流程节点我主要考虑不但支持Dart程序还可以支持其他的程序,只要能按照约定将数据存放在本地的Local Data里面。

上图的流程节点都是没有逻辑分叉,这个在我的规划里面是支持逻辑分叉的,开始的初期可以先不用考虑。

流程节点的实现在Dart层次主要是通过命令行的方式,这样自由度高,也是之前已经实现过一部分,具有一定的参考性。

dart 复制代码
Future<void> main(List<String> args) async {
	final identifier = args.first;
  final resouce = ChannelResouce.fromIdentifier(identifier);
  final request = await resouce.loadRequest();
  final response = await run(request);
  await resouce.saveResponse(response);
}

Future<ChannelResponse> run(ChannelRequest request) async {
	// 实现的逻辑
	return ChannelResponse.success(data);// 返回对应的数据
}

上面是一个大致的代码,不是真正实现的部分。我们只提供一个标准的run函数给开发插件的开发者。上面调用和保存结果到本地系统实现。

我们通过标准文件的读取和写入来实现不同程序之间的数据交互,这样就十分的可以扩展。如果你不想用Dart实现,比如你想用Shell,或者用Fastlane或者其他语言。只要你运行能将标准的输入和输出就可以。

这样实现插件的逻辑自由度很高,也可以将目前已有的功能进行迁移。

数据共享

整体是一个流程,这中间一定有数据共享的部分。关于数据共享我主要分位了三个层次。

  1. 环境变量,这个来源于当前运行期间系统自由的,或者比如Shell脚本进行设置。
  2. Map 这个主要是在Dart运行期间,可能需要一些环境值,不能直接操作,就通过Map进行存储。
  3. 本地文件 因为每一个插件都有输入和输出文件生成,那么后续的插件可以根据ID或者什么值拿到对应插件的输入和输出里面的值进行调用。

运行脚本

我打算将整个流程保存下面为一个可读的JSON,比如下面。

json 复制代码
{
	"name": "流程1",
	"request": {
		"path": "$ENV[PATH]",
		"id": "$DATA[流程1][ID]"
	},
 	"response": {
  	"code": xxxxx-xxxxx
	}
}

这样引擎解析之后将所需要请求的值从对应的里面获取,之后给对应插件运行。

这篇文章就先写到这里,后续根据具体的开发再细微的进行调整。

相关推荐
码上飞扬4 天前
深入浅出 Ansible 自动化运维:从入门到实战
运维·ansible·自动化运维
我码玄黄4 天前
解锁定位服务:Flutter应用中的高德地图定位
前端·flutter·dart
程序者王大川7 天前
【移动端】Flutter与uni-app:全方位对比分析
flutter·uni-app·app·nodejs·全栈·dart·移动端
Allen Su9 天前
【Dart 教程系列第 50 篇】在 Flutter 项目的国际化多语言中,如何根据翻译提供的多语言文档表格,快速生成不同语言的内容
flutter·dart·flutter多语言·dart快速打印不同的多语言
有趣的杰克12 天前
Flutter【03】图片输出package依赖关系
android·flutter·ios·鸿蒙·dart
疾风终究没有归途15 天前
Ansible自动化运维实战:打造高效、可靠的系统管理方案!
运维·自动化运维·配置管理·应用部署
有趣的杰克1 个月前
Flutter【02】mobx原理
android·flutter·ios·鸿蒙·dart
东边的那根草~1 个月前
2024年8月16日(运维自动化 ansible)
linux·运维·服务器·数据库·centos·自动化运维
数据智能老司机1 个月前
拥抱 DevOps 发布管理——DevOps 发布管理试图解决哪些问题?
架构·自动化运维·devops
暴走的海鸽1 个月前
MediaCrawler,轻松爬取xhs图片和评论
爬虫·自动化运维