SCOR模型

Python012

SCOR模型,第1张

定义

SCOR是第一个标准的供应链流程参考模型,是供应链的诊断工具,它涵盖了所有行业。SCOR使企业间能够准确地交流供应链问题,客观地评测其性能,确定性能改进的目标,并影响今后 供应链管理软件 的开发。流程参考模型通常包括一整套流程定义、测量指标和比较基准,以帮助企业开发流程改进的策略。SCOR不是第一个流程参考模型,但却是第一个标准的供应链参考模型。SCOR模型主要由四个部分组成:供应链管理流程的一般定义、对应于流程性能的指标基准,供应链 "最佳实施" (best practices) 的描述以及选择供应链软件产品的信息。

SCOR模型把 业务流程重组 、 标杆比较 和流程评测等著名的概念集成到一个跨功能的框架之中。SCOR是一个为 供应链 伙伴之间有效沟通而设计的流程参考模型,是一个帮助管理者聚焦管理问题的标准语言。作为行业标准,SCOR帮助管理者关注企业内部供应链。 SCOR用于描述、量度、评价供应链配置:规范的SCOR流程定义实际上允许任何供应链配置量度规范的SCOR尺度能使供应链 绩效 本衡量和 标杆比较 供应链配置可以被评估以支持连续的改进和战略计划编制。

涵盖范围

SCOR包括

所有与客户之间的相互往来,从定单输入到货款支付。

所有产品( 物料 实体和服务)的传送,从你的 供应商 的供应商到你的客户的客户,包括设备、原材料、配件、大批产品、软件等。

所有与市场之间的相互影响,从对累计总需求的理解到每项定单的完成。

不试图描述的内容

销售和市场(需求的产生)

技术研究开发

产品开发

·一些关于货物运送后技术支持的元素

呈现但并不清楚定义

培训

质量

信息技术管理

行政(非供应链管理)

模型结构

SCOR模型按流程定义可分为三个层次,每一层都可用于分析企业供应链的运作。在第三层以下还可以有第四、五、六等更详细的属于各企业所特有的流程描述层次,这些层次中的流程定义不包括在SCOR模型中。 SCOR模型的第一层描述了五个基本流程:计划(Plan)、采购(Source)、生产(Make)、 发运 (Deliver)和 退货 (Return)。它定义了 供应链运作参考模型 的范围和内容,并确定了企业 竞争性 能目标的基础。企业通过对第一层SCOR模型的分析,可根据下列 供应链 运作性能指标作出基本的战略决策:

SCOR模型建立在5个不同的管理流程之上

计划: 需求/供应计划

评估企业整体生产能力、总体需求计划以及针对产品分销渠道进行 库存 计划、分销计划、生产计划、 物料 及生产能力的计划。

制造或 采购决策 的制定、供应链结构设计、长期生产能力与资源规划、企业计划、产品生命周期的决定、生产正常运营的过度期管理、产品衰退期的管理与 产品线 的管理等。

采购: 寻找 供应商 /物料收取

·获得、接收、检验、拒收与发送物料

·供应商评估、采购运输管理、采购 品质管理 、采购合约管理、进货运费条件管理、采购零部件的规格管理

原材料 仓库管理

原材料运送和安装管理

·运输管理、付款条件管理以及安装进度管理

采购支持业务

·采购 业务规则 管理、原材料存货管理

生产

生产运作

申请及领取 物料 、产品制造和测试、包装出货等。

工程变更、生产状况掌握、产品质量管理、现场生产进度制定、短期 生产能力计划 与现场设备管理

在制品运输

生产支持业务

制造业务规格管理、 在制品 库存管理

配送

订单管理

订单输入、报价、客户资料维护、订单分配、产品价格资料维护、应收帐款管理、受信、收款与开立发票等

产品库存管理

存储、拣货、按包装明细将产品装入箱、制作客户特殊要求的包装与标签、整理确认定单、运送货物

产品运输安装管理

运输方式安排、出货运费调教管理、货品安装进度安排、进行安装与产品试运行

配送支持业务

配送渠道的决策制定、配送存货管理、配送品质的掌握和产品的进出口业务

退货

原料退回

退还原料给 供应商 :包括与商业伙伴的沟通、同时准备好文件资料以及 物料 实体的返还及运送。

产品退回

接受并处理从客户处返回的产品:包括商业伙伴的沟通、同时准备好文件资料以及物料实体的返还及接受和处理。

模型层次

第一层:绩效衡量指标

反映 供应链 性能特征,高层绩效测量可能涵盖了多个不同层次的SCOR流程。衡量供应链的表现与理解其运作都是一样必要的。

衡量工作必须结合企业的目标。

衡量工作要有可重复性。

衡量工作必须能对更有效地管理供应链提出见解。

衡量一定要适于所评测的流程活动。

第二层:配置层

在第二层配置层中,由26种核心流程类型组成。企业可选用该层中定义的标准流程单元构建他们的 供应链 。每一种产品或产品型号都可以有它自己的供应链。

每一个SCOR流程都分三种流程元素进行详细描述:

计划元素

调整预期的资源以满足预期需求量。计划流程要达到总需求平衡以及覆盖整个的规划周期。定期编制计划流程能有利于供应链的反应时间。计划流程同时综合模型中的部分及企业。

执行元素

由于计划或实际的需求引起 产品形式 变化,需要执行的流程包括:进度和先后顺序的排定、原材料及服务的转变及产品搬运。

支持元素

计划和执行过程所依赖的信息和内外联系的准备、维护和管理。

第三层:流程元素层

流程流

输入和输出

输入的采购

输出目的地

实施收益

可用途径

为支持新产品生产而计划,建立和规划一个公司

为企业进行供应链管理流程的再造

在企业范围内实行SCOR流程,并将第一级衡量标准作为管理层的评价标准

将物流工作组按照计划,采购,生产,配送和退货五个方面进行重组

用于多重组织中的协同预测以及制定合同和 采购订单

SCOR 在各个行业的广泛应用及收益记录:

消费食品行业

项目建立时间 (开始至完工)-3个月

投资额-,000 US

第一年投资回报-,300,000 US

电子行业

项目建立时间(开始至完工)- 6个月

投资额-0-500万 US

第一年投资回报- $ 23,000万 US

软件和计划编制

SAP公司APO的关键性能指标(KPIs)就是以SCOR模型为基础

航空和国防业

以SCOR为基准、利用SCOR的测量指标来规定各项性能标准、为合同和购货定单提供依据

运用意义

SCOR模型中所有流程元素都有流程元素的综合定义循环周期、成本、服务/质量和资金的性能属性与这些性能属性相关的评测尺度,以及软件特性要求。值得注意的是,SCOR不是软件指南,而是 业务流程 指南,但它也可作为供应链管理软件开发商的参考。在许多情况下,改变管理流程即可使企业获得最佳 业绩 而不需要开发软件。

SCOR模型是一个崭新的基于流程管理的工具,国外许多公司已经开始重视、研究和应用SCOR。大多数公司都是从SCOR模型的第二层开始构建他们的 供应链 ,此时常常会暴露出现有流程的低效或无效,因此需要花时间对现有的供应链进行重组。典型的做法是减少供应商、工厂和配送中心的数量,有时公司也可以取消供应链中的一些环节。一旦供应链重组工作完成,就可以开始进行性能指标的评测和争取最佳业绩的工作。

企业在运营中自始至终必须努力提高其供应链管理的效率。在提高其自身运作效率的同时,企业可以开始同供应商和客户一道发展被称为 " 扩展企业 "(Extended enterprise)的一种 供应链 成员间的战略伙伴关系。

一般用StringBuilder来组织SQL语句(大量字符串操作).

SQL中用 where 1=1 后接的多条件,添加的条件之间就可以用 and 来拼接.

例如

StringBuilder sbSql = new StringBuilder()

sbSql.Append("select * from talbe1 ")

sbSql.Append("where 1=1 ")

if(str1 != null &&str1 != "")

{

sbSql.Append("and col1='" + str1.Trim() + "' ")

}

if(str2 != null &&str2 != "")

{

sbSql.Append("and col2='" + str2.Trim() + "' ")

}

补充:

数据库中,可供数据查询的有:表(Table)和视图(View),它们的查询方式是一样的.

所以select后面使用表(Table)或视图(View)都是可以的.

差别在于:

视图(View)建立在表(Table)基础之上.已优化查询(Select).

不能对视图(View)进行增(Insert),删(Delete),改(Update)等操作.

这个真没有什么的,如果题目是业务需求的话,那么可以直接写三个函数进行处理:

public bool First(int a1, int b1, int c1)

{

    int sum = a1+b1+c1

    if(sum < 270)

        return false    // 平均分不低于90,与总分不低270是相同意思的表达

                         // sum/3 < 270/3 在数学上存约分关系,所以没有必要

                         // 再计算增均分大于90的情况。只不过要考虑一下计算

                         // 机中整数除法的特性,省略了小数部分。

    if(Math.Min(a1,b1,c1)<70)

        return false    // 最低分小于70不符合要求

                         

    if(a1<95?0:1+b1<95?0:1+c1<95?0:1>=2)

        return true

                         // 利用三元运算?:来计算学科分数大于等于95的门数

                         // a1<95?0:1表示a1<95时取0,反之取1,其他同理

                         // 最终可以确定大于等于95的科目数

   return false         // 条件过滤完全的为假的! 

}

// 同时写出二等奖学金的条件

public bool Second(int a1, int b1, int c1)

{

    int sum = a1+b1+c1

    if(sum <= 255)

        return false    // 上文解析过,但这里平均分大于85,总分也必须大于

                         // 255,等于255也不能通过

    if(Math.Max(a1,b1,c1)<95 || Math.Min(a1,b1,c1)<78)

        return false    // 这里用的是两个联合业务逻辑

                         // 至少一科不低于95,如果最大分小于95时显然不符合要求

                         // 两科目不低于78,那么最低科目低于78时肯定不符合

                         // 为什么不象上文一样计算科目呢?还是同域问题,

                         // 最低科目不低于78,那么所有科目都不会低于78!

    

    return ture

}

// 这个不用多说了吧?

public bool Third(int a1, int b1, int c1)

{

    return Math.Min(a1,b1,c1)>= 80

}

// 按钮中的事件就是将三者重复执行一下即可:

if(First(a1,b1,c1))

   return "一等"

elseif(Second((a1,b1,c1))

    return "二等”

elseif(Third(a1,b1,c1))

    return "三等"

else

    return "其他"

    

// 把三个计算的方式拆解成三个方法,可以使用条理稍清楚点。

// 但如果该题目考查的重点不是分支程序,而是你程序设计能力的话

// 那么此方法肯定不会评上高分!

// 如果要设计程序,那么必须把问题转化为问题域,这样你会得到很多等价问题

// 比如平均分不低于90与总分大于270是完全等价的。

// 平均分等于90与总分等于270是非完全等价(原因是计算机整数除法的原因)

// 总分不低于270与最低科目不低于70是条件等(每科100分时两者成立)

// 等等这些问题都算是问题域中的断言,最后有些断言是重叠一部分,有些断言则

// 在某些隐藏条件下是等价的。这就是转换成问题域之后可以直接解决的一些问题

// 当然,对于你这些问题,把业务条件(逻辑)重新整理一下,你会得到更简练更

// 便捷的算法——计算机编程之程序员之所以不能被代码生成器代替,很多原因上

// 是因为我们会”思考“,如果仅仅是按照业务逻辑写下来,那么,程序员与翻译

// 的区别在哪里?只能是比翻译更简单——因为计算机语言规则更有规则!

// 现在我们转换一下问题域

// 如果把三科目成绩排一下顺序:a1>=b1>=c1

// 一等奖学金的条件与sum >= 270 b1>=95 && c1>=70上相同的

// 或者是sum >=270 && b1>=95结果是相同的

// 二等奖学金则是a1>=95 && c1>=78 && sum >= 255

// 三等奖学金则是c1>=80

// 这种情况下,我们可以把数据规范到一起使用

// 这样我们也把功能分为两个功能:

// 1。排序

// 2。计算奖学金

// 还有两种写法要注意:

// 委托式开法与合同式开发

// 委托式:计算奖学金内部让排序方法排序,输入的a1,b1,c1没有顺序

// 合同式:计算奖学金必须排好序给我,你不排序我也不给你正确结果

// 委托式开发可能会导致调用关系上的复杂性,导致调用层式过深。所以

// 一般使用合同式开发。计算奖学金输入的值要先排序。

// 委托式很容易让你想到为什么不把排序方法直接写到计算奖学金的内部

// 两者组成一个方法呢?这涉及到一个设计原则问题——尽量简单,尽量

// 独立功能,尤其大型程序时。这样利用性很高——假设你其他地方也需要对

// 其进行排序时呢?这样排序代码是可以复用的。

// 所以此处可以可考虑使用合同式开发。

public list<int> Sort(List<int> sorce)

// 这样就是排序方法的签名,如果你对.net类库比较熟悉的话,你就知道

// List<T>及Array<T>等集合是有排序函数的——那么恭喜你,排序这个功能

// 你可以直接”复用“类库中的功能了!

public int GetJXJ(int[] scores){

    if(scores == null || scorces.Length<3)

        throw new Exception("参数错误")

    int sum = scores.Sum()    // 先计算出总分当然,平均分也可以

                               // 反正这步计算是要进行的,先计算

                               // 是可以节省一定运算代价。事实上

                               // 这个是内部实现的一个求和运算,

                               // 是一个循环。如果以下只会运行一

                               // 次的话,无所谓,如果有可能多次

                               // 运算,建议直接写出来,这个习惯

                               // 会让你的代码运行更快.

                               // 比如,我在写循环语句时常用:

                               // for(int i =0,j = scores.Length()i<ji++)

                               // 来代替

                               // for(int i=0i<scores.Length()i++)

                               // 原因就是比较时会每次执行scores.Length()

                               // 方法,但如果是属性的话,有些是存储值,则没有

                               // 必要再声明一个变量。

   if( sum >=270 && scores[1]>=95)

       return 1

   if( sum >=255 && scores[0]>=95 && scores[2]>=78) // 如果直接这个条件或以下

                                                    // 条件时,都会多次使用

                                                    // sum,如果直接使用方法

                                                    // 等于多执行了次数

                                                    // 虽然此处性能没啥损失

                                                    // 但最好养成一种习惯

       return 2

   if( scores[2]>=80)

       return 3

   return 0

}

// 使用时也很简单:

int[] scores = new int[]{a1,b1,c1}

int[] scores2 = scores.Sort()

int rslt = GetJXJ(scores2)

// rslt结果1/2/3/0分别代表一等/二等/三等/其他

//换句话来说,如果考查分支结果,你可以使用上边的方法(这种以后很可能会被代码生成器代替),如果考查设计能力,那么你使用的是下边的方法(至少当前环境下,AI还不能象人类一样这般思考)。