工作流权限管理方法论
昨天中午吃饭时和一位同学谈论了权限管理的问题,在他的一个ERP项目中,要涉及很精细的权限控制,而他要负责抽象出一套比较通用的权限框架,用户权限一直是ERP开发中比较头痛的问题,而恰恰他的这个项目的用户权限需求又非常精细。甚感为难。
恩......问题在哪里?回来后我也仔细思考了,我们未来向ERP领域进军,势必也要面对这样的问题。找出一套解决方案是很必要的。
我不是一个喜欢循规蹈矩的人,这既是优点也是缺点。
从抽象层次来讲,软件是一个很典型的轮回模型,小到OO的模型,大到未来的SO模型,一直是在资源、处理机环境(人还是CPU(OO层次),人还是面向服务的系统(SO层次))和处理方法中轮回,在哲学意义上,正好体现的是空间和物质(资源),时间(处理机环境)和物质联系(方法)。
所以,权限管理本质上属于物质联系,属于工作流的,我们在抽象时必须非常清楚这个本质问题。权限管理本质上是用户资源和表单资源之间的相互联系,我们在设计工作流的时候就要好好想想了,权限管理应该在工作流的外面还是里面?当然,权限管理是特殊的,特殊性的根本原因不是因为它是个不同于工作流的另类的东西,而是在于一个工作流基本上都是由用户来发起的,属于工作流最初的起点部分,这样的场景才是权限管理特殊性的本质所在。而我们在实际处理的时候往往将权限管理从工作流中剥离出来,以至于很多企业想做一个通用的权限管理框架,我觉得这会有很大的难度。因为你要涉及权限管理就要处理用户资源,不同的系统的用户资源的表示方式是不一样的,与表单资源之间的联系也是不一样的。
所以,一套软件系统的权限管理是和用户实际体系运作强绑定的,强行剥离去耦势必会带来很大麻烦。我的处理建议是,既然理论上已经讲明白权限体系很难单独从实际工作流中剥离出来,不如顺其自然,老老实实将它包括在实际的工作流里,利用WF这样基础的工作流平台的快速便捷性,降低项目开发、管理、维护成本。