基于规则的业务流程分析

本文探讨了一个复杂的业务流程,从最初的请求-接收流程扩展到包含完全发送和部分发送的操作。通过分析和使用Workflow Pattern,作者提出了用规则引擎实现流程控制,包括选择型、条件型和无条件型规则,以提高流程的灵活性和可维护性。
摘要由CSDN通过智能技术生成
“思考得少,瞎干得多”,就是目前企业开发的现状。瞎干了两个月后,回头来分析一下一个有趣的流程,是我们目前项目中最复杂的一个流程(因为要完成它而不能动脑,所以复杂)。
首先把UML书上的案例扔到一边,那个是齐全的菜谱、佐料、原料而真实项目是荒地。想想走到荒地上给自己整一顿满汉全席,不容易啊…… 现在已经忘了最初听到这个流程的描述是怎么样的了。大概就是“一个待办项会发送和接收很多次,也可以发送接收一次,发送完后就不能再次发送了,最后一个接收结束后才能结束整个流程”——够昏的吧^O^遇到这种事千万不能听客户、需求人员甚至项目经理的,架构师才是设计这个系统的人,不能自己分析、定义业务对象,下课去吧。
第一反应就是发送和接收必须是两个不同的待办项,随后是必须定义两个不同的动作:完全发送和部分发送。概念一定要区分准确。 随后关于如何叫完全发送和部分发送有几次需求上的变化,但不影响流程的执行规则。
这个就形成了我在业务流程配置一文中写的ResponseTask类,当时的需求就是请求-接收,所以只写了两个Task;随后扩展成了每接收之后还有一个任务叫填写意见书,所有的意见书完成之后再开始一个新的任务。所以就改成了:请求-接收-响应三个操作,修改ResponseTask,增加了ResponseType这一枚举值属性,修改了结束的算法。目前的流程执行规则是相当死板的,完全硬编码在引擎内部,无法改变。以下是ResponseTask类和执行代码:
using System;

using System.Collections.Generic;

using System.Xml.Serialization; 



namespace Microsoft.Applications.ChinaMobilePMS.FlowEngine

{

    public class ResponseTask : TaskBase, IComparable<ResponseTask>

    {

        private int requestNumber = 0;

        private ResponseType responseMode = ResponseType.Request; 



        [XmlAttribute("RequestNumber")]

        public int RequestNumber

        {

            get { return requestNumber; }

            set { requestNumber = value; }

        } 



        [XmlAttribute("Mode")]

        public ResponseType ResponseMode

        {

            get { return responseMode; }

            set { responseMode = value; }

        } 



        #region IComparable<ResponseTask> Members 



 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值