网络商店应用框架:DCART

jopen 10年前

DCART 将是一个商店类的应用程序框架,它将会是一群业余爱好者开发的,更好的开源商店框架。

系统设计的想法
==============

这完全是一个业余爱好者的项目。

在用过了几个框架,和见识了几个开源的PHP项目之后,我想写一个更加灵活实用的应用程序框架。
大多数的MVC框架做了基础的工作,同时也做了一些限定,这些基础的工作往往都很优秀,而这些限定...

好像是,我不想要使用限定好的MVC目录结构,所以...
我尝试在google上搜索,而找到了Silex,简单的说Silex提供了路由,还有MVC,但是没有更多的限定...

开发这个项目的源起,是因为想要写一个更好的网络商店系统,是的,谢谢opencart,它迫使我这样想...

我发现,在这个网络商店系统中,你想要修改它的数据流或者工作流,都相当的困难...
几乎是,你不得不冒着破坏掉所有主题、插件的风险在做这样的事情,而且你不得不这样做...

所以,我想,为什么我们不能让它更加灵活呢?让工作流和数据流可以通过不同的模块来在运行中动态定义和剪裁呢?

如果一个系统开发的初期,只想到了提供其所需要的特性,而不是考虑到提供开放其工作流和数据流的接口,那么...
如果一个系统,提供了其工作流和数据流的接口,是否就可以完全解决问题呢,也未必如此...

从感觉上,尽可能小的系统核心,尽可能少的工作流和数据流,以及尽可能少的依赖,似乎是必要的...
而对于,那些位于核心之外的部分,请尽可能的依赖与核心...

opencart的一个问题,就是其写了一个功能完善的商店系统,而让所有的主题,插件都依赖与它...
这在某点上,导致当你动了这个系统之后,别的主题插件就可能实效了...

所以,简单,微小的核心,微小的模块,加上微小的.....还有自我的包含和依赖,而不是过分依赖于第三方的...

我想说它应该有很多的特性,我可以想到很多,但是大多数对于目前而言,都没有意义...

目前的主要的工作,就是确定,如何实现工作流和数据流的动态定义和裁剪...
这是一个尝试的过程

工作流和数据流
============

到目前为止,我对于其明确的定义还是很陌生,我的概念里面,一个系统有其工作的流程,这个就是工作流吧。
工作流中会有数据的处理,所以,数据的流向可以单独的表示出来,我叫做数据流吧。

可以看出来,我显然是个业余爱好者...

如果一个系统有固定的工作流程,我们把它划分为不同的部门,处理不同的工作,这个部门越小,越容易控制...
当一个部门的工作流确定之后,我们可以说,一系列的代码执行序列确定之后,要考虑代码中的流程控制...

例如,卖票的工作是一个流程,那么,如果我们想要在买票的这个流程之中动态的加入几个审核票的发行方的工作流...
这样发行方可以统计自己发行的电影有了多少票房,显然,如果卖票这个流程已经定义,那么就要考虑给发行方一个流程接入的机制...
比如,发行方派几个人来,然后几张桌子,几张椅子,统计了之后...

如果,多一步,管理者不相信卖票部门的信用,所以需要加入一个监督的人员,发现又不合适的交易,就停止...

事情变的复杂...
使用代码你很容易形成一个树形的工作流图,但是对于图的结构,就支持有限了...

这应该是另外一种队列,而其中的每个元素的放回的结果,将被回调处理,从而能够确定下一步的方向...
如果说其中的一系列的元素,都影响了当前的流程的走向,那么这是一个图的方式...

组合的问题,如果这两种放在一起做一个组合的话,又如何对待?不可能,任何一种同质的工作都在一个队列之中,相当于一种类型的节点...

项目主页:http://www.open-open.com/lib/view/home/1405734898031