专利名称:业务项目顺序的设置方法和装置的制作方法
技术领域:
本发明涉及排序方法,更具体地,本发明涉及业务系统中各业务 项目顺序的设置方法和装置。
背景技术:
在企业管理中存在着多种业务系统,例如人事薪资系统、人事缋 效考核系统、以及供应链配料系统等等。在一个业务系统中,通常都 存在多个业务项目,并且每个业务项目之间还存在着依赖关系。业务 系统正是通过这些业务项目及其之间的关系来进行运算和管理的。那 么各个业务项目之间的处理顺序将可能影响到系统的处理结果。在现 有技术中多数的系统都是由人来手工确定和判断可能存在着依赖关系 的多个业务项目的处理顺序。如果处理顺序设置的不正确,并且如果业务项目间存在着闭环的依赖关系时也发现不了,就会造成处理结果 不正确。例如,在人事薪资系统中,假设存在6个基本业务项目,包括 A,应发合计;B,扣款合计;C,日扣款;D,基本工资;E,缺勤 天数;F,月平均工作日。假设将它们之间的业务关系设计为应发合计(A)=基本工资(D)-扣款合计(B);扣款合计(B)=日扣款(C) x缺勤天数(E);日扣款(C)=应发合计(A)/月平均工作日(F)。由上述的业务关系可以看出,应发合计(A)是由基本工资(D)和扣 款合计(B)计算得来。我们把这种关系叫做应发合计(A)依赖于基本工 资(D)和扣款合计(B),即A依赖于D和B。同理可以看出B依赖于C 和E, C依赖于A和F。它们间存在着A依赖于B, B依赖于C, C依 赖于A。这样,它们之间的这种A->B->C->A的业务关系刚好组成一个闭环,造成无法确定它们之间的计算顺序。对于这种逻辑关系在系 统设置过程中应该避免。当一个业务系统有大量业务项目时,它们之 间的依赖关系可能更加地复杂,因此造成人无法直接地判断是否存在 这样的闭环。因此,需要一种能够根据业务系统中各个业务项目间的依赖关 系,检测各个业务项目之间是否存在闭环并确定系统的各个业务项目 顺序的设置方法。发明内容为了解决上述问题,本发明提出了一种业务项目顺序的设置方法,包括确定项目中的多个业务项目之间的相互依赖关系,并根据 所述依赖关系得到有向图;确定所述有向图是否为有向无回路图;如 果所述有向图为有向无回路图,则使用拓朴排序方法对所述有向无回 路图进行拓朴排序;以及将所述拓朴排序后的所述多个业务项目之间 的顺序设置为所述项目中的所述多个业务项目之间的顺序。在上述方法中,可以根据所述有向图中是否存在闭环回路来确定 所述有向图是否为有向无回路图,如果所述有向图中不存在所述闭环 回路则确定所述有向图是有向无回路图。另外,上述方法还可以包括如果所述有向图不是有向无回路 图,则提示存在闭环并停止所述业务项目顺序的设置方法。在上述方法中所述采用的拓朴排序方法包括调用深度优先搜索 算法来计算所述有向无回路图的每个顶点的完成时间;完成每个所述 顶点的完成时间的计算之后,将每个所述顶点按照所述完成时间排 序。根据本发明的另一方面,还提供了一种业务项目顺序的设置装 置,其特征在于,包括有向图形成单元,用于确定项目中的多个业 务项目之间的相互依赖关系,并根据所述依赖关系得到有向图;判断 单元,用于确定由所述有向图形成单元形成的所述有向图是否为有向 无回路图;拓朴排序单元,用于在所述判断单元确定所述有向图为有向无回路图的情况下,使用拓朴排序方法对所述有向无回路图进行拓朴排序;以及顺序设置单元,用于将经过所述拓朴排序单元排序后的 所述多个业务项目之间的顺序设置为所述项目中的所述多个业务项目 之间的顺序。其中,所述判断单元可以根据所述有向图中是否存在闭环回路来 确定所述有向图是否为有向无回路图,如果所述有向图中不存在所述 闭环回路则确定所述有向图是有向无回路图。其中,所述拓朴排序单元包括调用单元,用于调用深度优先搜 索算法来计算所述有向无回路图的每个顶点的完成时间;以及排序单元,用于在所述调用单元完成每个所述顶点的完成时间的计算之后, 将每个所述顶点按照所述完成时间排序。上述装置还可以包括提示单元,在所述有向图不是有向无回路 图的情况下,提示存在闭环并停止所述业务项目顺序的设置方法。根据本发明的业务项目顺序的设置方法和装置能够检测业务项目 之间是否存在闭环,并且能够确定系统业务项目的正确顺序,从而保 证业务系统的处理结果。
图l是示出了不存在闭环依赖关系的有向图的示意图; 图2是示出了存在闭环依赖关系的有向图的示意图; 图3是示出了根据本发明的业务项目顺序的设置方法的流程图; 图4是示出了根据本发明的实施例的业务项目顺序的设置方法的 5危禾呈图;以及图5是示出了根据本发明的业务项目顺序的设置装置的框图。
具体实施方式
以下,将参考附图详细说明本发明的实施例。 下面参考图l至图3来描述根据本发明的业务项目顺序的设置方 法的原理。6图l和图2分别示出了不存在闭环依赖关系和存在闭环依赖关系 的有向图的示意图。如本领域技术人员所知的,在一个业务系统中,各个业务项目一 般不是独立存在的。它们通常都依赖于一个或多个其他业务项目。根 据这种依赖关系,可以建立一个有连续的有向图结构。假设一个系统中有4个项目A, B, C, D。如果之间存在着下列关系A依赖于B,D; B依赖于D; C依赖于B,则可以得到如图1所示的有向图。如图1所示,以上4个项目 A, B, C和D之间不存在闭环依赖关系。假设业务系统中存在4个业务项目A, B, C和D,并且之间存 在着下列关系A依赖于B,D;B依赖于C;C依赖于A,则可以得到如图2所示的有向图。如图2所示,这4个项目之间 存在闭环A->B->C->A,它们之间相互依赖,这样的有向图就导致计 算结果时出错或者流程无法进行。下面将参考图2和图3的有向图来简单说明有向图排序的技术原理。在这种有向图中,各结点代表任务或活动,而边表示任务之间的 优先关系,即边<&, b>表示a的任务处理完后才能处理b的任务, 如果图是有回路(闭环)的就不可能存在这样的线性序列,也就是在 业务系统设置过程中应该避免这种情况。没有回路的有向图#:称作 "有向无环图"。这种有向无环图称为"顶点活动网络"或AOV (Activity On Vertices )网络。使用深度优先搜索拓,对这种有向无回路图进行拓朴排序,拓朴排序的结果为该图所有顶点的 一个线性序列。
一个图的拓朴排序可以 看成是图的所有顶点沿水平线排成的一个序列,使得所有的有向边均 从左指向右。因此,拓朴排序不同于通常意义上对于线性表的排序。 用有向无回路图说明业务项目处理的先后次序。 下列简单算法可以对一个有向无回路图进行拓朴排序。procedure Topological—Sort(G); begin1. 调用深度优先搜索DFS(G)计算每个顶点的完成时间f[v;2. 当每个顶点完成后,把它插入链表前端;3. 返回由顶点组成的链表; end.为了证明算法的正确性,运用了下面有关有向无回路图的重要引理。引理1有向图G无回路当且仅当对G进行深度优先搜索没有得到反向边。证明—:假设有一条反向边(u,v),那么在深度优先森林中结点v必为 结点u的祖先,因此G中从v到u必存在一通路,这一通路和边(u,v) 构成一个回路。—:假设G中包含一回路C,我们证明对G的深度优先搜索将 产生一条反向边。设v是回路C中第一个被发现的结点且边(u,v)是 C中的优先边,在时刻d[v从v到u存在一条由白色结点组成的通 路,根据白色路径定理可知在深度优先森林中结点u必是结点v的后 裔,因而(u,v)是一条反向边。定理1TopologicaLSort(G)算法可产生有向无回路图G的拓朴排序。 证明假设对一已知有向无回路图G^V,E)运行过程DFS以确定其结8点的完成时刻。那么只要证明对任一对不同结点u,v6V,若G中存 在一条从u到v的有向边,则f[v]〈f[u]即可。考虑过程DFS(G)所探 寻的任何边(u,v),当探寻到该边时,结点v不可能为灰色,否则v将 成为u的祖先,(u,v)将是一条反向边,和引理1矛盾。因此,v必定 是白色或黑色结点。若v是白色,它就成为u的后裔,因此 f[v<f[u。若v是黑色,同样fv<f[u。这样一来对于图中任意边 (u,v),都有f[v〈f[u,从而定理得证。另一种拓朴排序的算法基于以下思想首先选择一个无前驱的顶 点(即入度为0的顶点,图中至少应有一个这样的顶点,否则肯定存 在回路),然后从图中移去该顶点以及由他发出的所有有向边,如果图中还存在无前驱的顶点,则重复上述操作,直到操作无法进行。如 果图不为空,说明图中存在回路,无法进行拓朴排序;否则移出的顶 点的顺序就是对该图的一个拓朴排序。这个算法虽然简单,但是没有 前面一个算法的效率高。下面将参考附图3和图4来描述本发明的业务项目顺序的设置方法的 流程图。图3是示出了根据本发明的业务项目顺序的设置方法的流程 图。如图3所示,根据本发明的业务项目顺序的设置方法包括步骤 S302,确定项目中的多个业务项目之间的相互依赖关系,并根据所述 依赖关系得到有向图;步骤S304,确定所述有向图是否为有向无回 路图;步骤S306,如果所述有向图为有向无回路图,则使用拓朴排 序方法对所述有向无回路图进行拓朴排序;以及步骤S308,将所述 拓朴排序后的所述多个业务项目之间的顺序设置为所述项目中的所述 多个业务项目之间的顺序。图4是示出了根据本发明的实施例的业务顺序的设置方法的流程 图。在该实施例中,业务系统为人事薪资系统,存在6个基本业务项 目,包括A,应发合计;B,扣款合计;C,日扣款;D, 基本工资;E, 缺勤天数;以及 F, 月平均工作曰。根据图4所示的流程图,步骤S402,先确定各项目之间的相互 依赖关系。假设它们之间的依赖关系设计成如下简单的业务关系 应发合计(A)=基本工资(D)-扣款合计(B), 扣款合计(B)-日扣款(C)x缺勤天数(E), 日扣款(C)=基本工资(D)/月平均工作日(F)。在步骤S404,形成有向图,并确认有向图中是否为有向无回路 图,在此是通过检测有向图中是否存在闭环依赖关系来确定的。在该 实施例中,因为不存在闭环依赖关系,所以进行到步骤S406,采用 拓朴排序方法对项目进行排序,并返回排序结果。其中,在步骤 S404中,拓朴排序方法包括调用深度优先搜索算法来计算有向无 回路图的每个顶点的完成时间;完成每个顶点的完成时间的计算之 后,将每个顶点按照所述完成时间排序。然后,在步骤S406,将排 序结果设置为该人事薪资系统中的多个业务项目之间的顺序。对于这 个系统,通过上述处理可以得到项目的一种排列顺序F->D->E->C->B->A。在此,本领域的技术人员应该明白,此结果不是唯一的正确 顺序。如果在S404中确定存在闭环依赖关系,则可以提示提示存在闭 环并停止业务项目顺序的设置过程。图5示出了根据本发明的业务项目顺序的设置装置的框图。如图 5所示,根据本发明的业务项目顺序的设置装置500包括有向图形 成单元502,用于确定项目中的多个业务项目之间的相互依赖关系, 并根据所述依赖关系得到有向图;判断单元504,用于确定由所述有 向图形成单元形成的所述有向图是否为有向无回路图;拓朴排序单元 506,用于在所述判断单元确定所述有向图为有向无回路图的情况 下,使用拓朴排序方法对所述有向无回路图进行拓朴排序;以及顺序设置单元508,用于将经过所述拓朴排序单元排序后的所述多个业务 项目之间的顺序设置为所述项目中的所述多个业务项目之间的顺序。其中,判断单元可以根据所述有向图中是否存在闭环回路来确定 所述有向图是否为有向无回路图,其中如果所述有向图中不存在所述 闭环回路则确定所述有向图是有向无回路图。拓朴排序单元506可以包括调用单元5062,用于调用深度优先搜索算法来计算所述有向无 回路图的每个顶点的完成时间;排序单元5064,用于在所述调用单元完成每个所述顶点的完成 时间的计算之后,将每个所述顶点按照所述完成时间排序。优选地,还可以包括提示单元510,在所述有向图不是有向无 回路图的情况下,提示存在闭环并停止所述业务项目顺序的设置方 法。综上,根据本发明的业务项目顺序的设置方法和装置,可以有效 地避免在系统设置过程中,多个业务项目存在闭环的逻辑关系,进而 导致计算错误的问题,并且通过本发明的方法,可以正确地得到业务 项目顺序。以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本 发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应 包含在本发明的保护范围之内。
权利要求
1.一种业务项目顺序的设置方法,其特征在于,包括确定项目中的多个业务项目之间的相互依赖关系,并根据所述依赖关系得到有向图;确定所述有向图是否为有向无回路图;如果所述有向图为有向无回路图,则使用拓扑排序方法对所述有向无回路图进行拓扑排序;以及将所述拓扑排序后的所述多个业务项目之间的顺序设置为所述项目中的所述多个业务项目之间的顺序。
2. 根据权利要求1所述的业务项目顺序的设置方法,其特征在 于,根据所述有向图中是否存在闭环回路来确定所述有向图是否为有 向无回路图,其中如果所述有向图中不存在所述闭环回路则确定所述 有向图是有向无回路图。
3. 根据权利要求1或2所述的业务项目顺序的设置方法,其特 征在于,还包括如果所述有向图不是有向无回路图,则提示存在闭环并停止所述 业务项目顺序的设置方法。
4. 根据权利要求1所述的业务项目顺序的设置方法,其特征在 于,所述拓朴排序方法包括调用深度优先搜索算法来计算所述有向无回路图的每个顶点的完 成时间;完成每个所述顶点的完成时间的计算之后,将每个所述顶点按照 所述完成时间排序。
5. —种业务项目顺序的设置装置,其特征在于,包括 有向图形成单元,用于确定项目中的多个业务项目之间的相互依赖关系,并根据所述依赖关系得到有向图;判断单元,用于确定由所述有向图形成单元形成的所述有向图是 否为有向无回路图;拓朴排序单元,用于在所述判断单元确定所述有向图为有向无回 路图的情况下,使用拓朴排序方法对所述有向无回路图进行拓朴排序;以及顺序设置单元,用于将经过所述拓朴排序单元排序后的所述多个 业务项目之间的顺序设置为所述项目中的所述多个业务项目之间的顺 序。
6. 根据权利要求5所述的业务项目顺序的设置装置,其特征在 于,所述判断单元根据所述有向图中是否存在闭环回路来确定所述有 向图是否为有向无回路图,其中如果所述有向图中不存在所述闭环回 路则确定所述有向图是有向无回路图。
7. 根据权利要求5或6所述的业务项目顺序的设置装置,其特 征在于,还包括提示单元,在所述有向图不是有向无回路图的情况下,提示存在 闭环并停止所述业务项目顺序的i殳置方法。
8. 根据权利要求5所述的业务项目顺序的设置装置,其特征在 于,所述拓朴排序单元包括调用单元,用于调用深度优先搜索算法来计算所述有向无回路图 的每个顶点的完成时间;排序单元,用于在所述调用单元完成每个所述顶点的完成时间的 计算之后,将每个所述顶点按照所述完成时间排序。
全文摘要
本发明提出了一种业务项目顺序的设置方法,包括确定项目中的多个业务项目之间的相互依赖关系,并根据所述依赖关系得到有向图;确定所述有向图是否为有向无回路图;如果所述有向图为有向无回路图,则使用拓扑排序方法对所述有向无回路图进行拓扑排序;以及将所述拓扑排序后的所述多个业务项目之间的顺序设置为所述项目中的所述多个业务项目之间的顺序。本发明还提供了一种业务项目顺序的设置装置。根据本发明的业务项目顺序的设置方法和装置,可以有效地避免在系统设置过程中,多个业务项目存在闭环的逻辑关系,进而导致计算错误的问题,并且通过本发明的方法,可以正确地得到业务项目顺序。
文档编号G06Q10/00GK101576980SQ20091008726
公开日2009年11月11日 申请日期2009年6月15日 优先权日2009年6月15日
发明者周春星, 国 张 申请人:用友软件股份有限公司