2004年12月22日

下一个主题

    企业级Observer 模式的实现,关注于在不同的程序域中实现Observer。

posted @ 2004-12-22 15:03 纯爷们 阅读(265) 评论(0) 编辑

A big picture of ERP

    ERP可以说是由MRP,闭环MRP,MRP||发展而来的,闭环MRP在MRP的基础上加入了对企业内部生产能力、采购能力的评估,MRP||把生产、销售、财务、采购集成起来形成了一个企业内部资源统一计划管理的系统,在MRP||的基础上ERP将资源范围扩展到企业外部,包括客户的信息以及企业的一个完整的供应链管理。
    实际上ERP的管理思想集中在了企业整个供应链上的管理,以及支持各种先进的生产模式,并做到计划与控制的结合。
    ERP主要处理三种流:资金流,信息流,物流。在企业中一般的管理也可以为为下面几种:财务管理(会计核算、财务管理),物流管理(采购,库存,分销),生产控制(计划、制造)另外就是人力资源管理。可以说现在ERP所做的就是统一管理,共享数据。
    下面说一下ERP的几个模块:
    1.财务管理
    具体分为会计核算和财务管理两部分,会计核算包括:总帐,应收帐,应付帐,固定资产,现金,多币值等功能模组,而财务管理偏重于财务计划、财务分析、财务决策等功能。
    2.生产控制模块
    生产控制模块是是ERP的核心所在,它包括:主生产计划、物料需求计划、能力需求计划、车间控制、制造标准等功能块。
    3.物流管理
    ERP中的物流管理主要是进、销、存的管理,其中分销管理模块包括:客户信息的管理与服务(CRM是其扩展),对于销售定单的管理,销售的统计与分析。
    库存模块主要功能是为所有的物料建立库存,决定何时定货采购,作为与采购、生产部门交互的依据。
    采购管理模块主要是对供应商的管理,包括供应商的基本信息、信誉、绩效等的维护以及查询,采购的分析与统计等功能。
    4.人力资源管理
    人力资源管理当然包括招聘与规划、绩效考核、培训与发展、薪资计算、出勤人事信息的管理等,以便优化流程,节省成本。    
    另外还有一句话值得回味,企业应该分清什么是ERP系统,什么是ERP软件,一个ERP软件并不能解决企业的管理问题,ERP的成功实施要依靠5P,即Process(业务流程再造),People(人力资源管理),Practice(业务行为规范),Product(信息产品支持),Partnership(选择合作伙伴)。 
   

posted @ 2004-12-22 10:58 纯爷们 阅读(378) 评论(0) 编辑

The first glance of Template Method Pattern

    上次看团队的技术讨论Blog,了解到了大家说Template Method Pattern是常用的设计模式之一,所以今天可花了点时间看了一下,起初一看,感觉没什么,太简单了,不就是继承吗?父类给个模板,子类相应的实现不就可以了吗?后来稍加注意了一下,感觉自己的理解只停留在Template上,却没有关注Method,实际上在父类中要有一个模板方法(template method),这个方法可能会封装了该类功能的算法或者计算逻辑的框架,而框架中包含的基本方法(primitive method)是要延迟到子类中去实现的。
    在J2EE架构中Servlet中定义的Service方法实际上就是一个模板方法的体现,在Service方法中调用了一些基本的Do方法,比如我们熟悉的DoGet,DoPost,DoDelete等都是基本方法,这些Do方法由继承自Servlet的子类来实现,实际上也就是完成对Servlet的定制。
    回顾一下自己编写的eHR的代码,感觉有好多地方有类似的功能,(下面牵扯到业务,大家可以略过)比如计算一批员工绩效考核的分等(相当于template method)就分为下面的一些方法(相当于primitive method):计算方案得分,计算关键事件得分,计算总得分,根据分等策略进行分等。这四个方法就相当于基本方法,由于这四个方法有的可能会有不同的实现,比如分等的时候可能采用基于比例的分等或者是基于分数的绝对分等,所以在不同的分等计算类(模板子类)中就可以实现这些不同的基本方法,但是计算逻辑是一样的:),说说我现在的处理方式,不怕大家笑话,我是把几中逻辑放在那里,把不用的逻辑注释掉,用的留下,惭愧啊!!!!
    开始重构吧!
    重构的初步思想用下面的代码体现,主要是不包含业务逻辑,以便理解:

/*******************************************************
 *                    模板方法模式
 *    模板方法就是由一个父类来定义一种算法的结构,这个算法
 * 的方法在父类中称为Template Method,同时在父类方法中定
 * 义了实现该方法的框架,这些框架被称为是Primitive方法,
 * 这些Primitive方法实现的具体细节被延迟到了子类中。
 *    本段程序通过ePerformance中的计算分等包结果的例子来说
 * 明该模式的应用。
 * ****************************************************
*/

using System;

namespace TemplateMethod
{
    
/// <summary>
    
/// Client 的摘要说明。
    
/// </summary>

    class Client
    
{
        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            RateClassifyCalculater o_RateClassifyCalculater
=new RateClassifyCalculater();
            o_RateClassifyCalculater.MainCalculateLogic();
        }

    }


    
abstract class  AbstractPackageCalculater
    
{
        
/// <summary>
        
/// 包分等计算的主逻辑框架
        
/// </summary>

        public void MainCalculateLogic()
        
{
            Console.WriteLine(
"Template Method Called");
            ProjectCalculater();
            PackageCalculater();
            ClassifyPackage();
            Console.ReadLine();
        }


        
/// <summary>
        
/// 计算包中方案总得分的抽象方法
        
/// </summary>

        abstract public void ProjectCalculater();

        
/// <summary>
        
/// 计算最终包的得分的抽象方法
        
/// </summary>

        abstract public void PackageCalculater();

        
/// <summary>
        
/// 将计算好的包进行分等的抽象方法
        
/// </summary>

        abstract public void ClassifyPackage();

    }


    
class RateClassifyCalculater:AbstractPackageCalculater
    
{
        
/// <summary>
        
/// 比例分等计算的方案计算具体实现
        
/// </summary>

        public override void ProjectCalculater()
        
{
            Console.WriteLine(
"Rate classify's calculater of project score called");
        }


        
/// <summary>
        
/// 比例分等计算的包分数计算具体实现
        
/// </summary>

        public override void PackageCalculater()
        
{
            Console.WriteLine(
"Rate classify's calculater of package score called");
        }


        
/// <summary>
        
/// 比例分等计算的包分等策略具体实现
        
/// </summary>

        public override void ClassifyPackage()
        
{
            Console.WriteLine(
"Rate classify's calculater of package classify logic called");
        }




    }

}

posted @ 2004-12-22 09:52 纯爷们 阅读(1154) 评论(6) 编辑