流程设计之我见

    常言道一孕傻三年,未曾想一病也至于斯。为防记忆衰退,特此记下。

    自己工作生涯中,有大概两三年是与开发流程编排系统打交道的,也曾用过或听过很多产品,包括ccflow、tensoerflow,甚至bcg中也有相关内容,有些只是完成UI的工作,有些本身即是完整模型,完成了数据绑定等一系列业务逻辑,只不过各行业都有所区别,因此基于成熟产品改造是比较不错的选择。而在我看来流程设计器本身有三大技术难点:

    一、异构数据的传递。我曾经从事遥感行业,业务流程中需要输入参数,可能是简单的参数,如int float,也可能是一个文件handle,或者一块位图的内存,或者ui交互,如此种种。传递方式本身也需要多样,可能是本线程内,也可能是跨线程、跨进程,甚至远程(因为要确保其不出灾难性错误,多进程本身隔离开更安全些,守护进程等恢复工具也需要参数驻留)。我们曾今的方法是改造一个COM对象,使其能够传递各种类型。这样做有优点,能够接入多种语言二次开发,DCOM能够直接支持分布式,缺点也很明显,不支持跨平台。我曾设想过用MongoDB来做数据存储,以此摆脱com,很遗憾未能成行。

    二、内存、线程、进程、云端资源分配与管理。32位时代,我最长遇到的问题是内存不够了、createfilemapping失败了之类,云端时代,我遇到的问题是这么多节点中,你该选择哪个节点作为最优解,计算性能如何分配?不过可惜,云端时代没有做过复杂的业务流程,比如运行到某一步时需要ABCDE五步并行运行,单机我可以A先执行完了就等待,等着BCDE都执行完成,但你要在集群这么干就太浪费性能了。

    三、结果数据的存取。

    写完我才想起来,这个在当今时代已经不是什么事了,pg之类的分布式数据库已经基本都能解决了,我们当年又是设计文件系统又是虚拟硬盘的折腾,现在很多产品PB级别的轻松支持,时代在进步。至于其他一些细节性的问题,相对来说难度就不是那么大了,欢迎大家讨论。

你可能感兴趣的:(插件/架构)