CN101976242B - 生成业务对象的内部级次编码的方法和系统 - Google Patents

生成业务对象的内部级次编码的方法和系统 Download PDF

Info

Publication number
CN101976242B
CN101976242B CN 201010292020 CN201010292020A CN101976242B CN 101976242 B CN101976242 B CN 101976242B CN 201010292020 CN201010292020 CN 201010292020 CN 201010292020 A CN201010292020 A CN 201010292020A CN 101976242 B CN101976242 B CN 101976242B
Authority
CN
China
Prior art keywords
internal level
time coding
level time
sql statement
business object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 201010292020
Other languages
English (en)
Other versions
CN101976242A (zh
Inventor
史周军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yonyou Software Co Ltd filed Critical Yonyou Software Co Ltd
Priority to CN 201010292020 priority Critical patent/CN101976242B/zh
Publication of CN101976242A publication Critical patent/CN101976242A/zh
Application granted granted Critical
Publication of CN101976242B publication Critical patent/CN101976242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种生成业务实体的多个业务对象的内部级次编码的方法,所述业务实体的实例包括多个业务对象,包括:步骤S102,选择所述业务实体,设置所述业务实体的多个业务对象的内部级次编码规则;步骤S104,根据所述内部级次编码规则生成所述内部级次编码。本发明还提出了一种生成业务实体的内部级次编码的系统。根据本发明的技术方案,可以实现一种生成业务对象的内部级次编码的方法和系统,能够非常方便地用于业务对象具有树型关系的业务实体,灵活地对业务对象的内部级次编码的每段长度进行定制,可直接支持包含下级业务对象和直接使用编码,简化程序的开发,提高处理效率。

Description

生成业务对象的内部级次编码的方法和系统
技术领域
本发明涉及生成级次编码技术,尤其涉及一种生成业务对象的内部级次编码的方法和系统。
背景技术
在管理软件中,有一类常见的业务实体,其实例化的业务数据存在着上下级的隶属关系或关联关系,例如“部门”对象就属于这类业务实体,一个部门可能隶属于一个上级部门,而该部门有可能包含多个下级部门。如何使用好这类业务实体,是一个需要详细分析和处理的问题。
当前的管理软件的开发和应用中,针对业务数据具有树型结构关系的业务实体的设计和实现,主要存在以下几种情况:
1)对该类对象设计了其对象关联关系。通常在这种情况下,业务实体会具有两个主要的属性:id和parentid。id是具体业务对象的标识,而parentid表示该id代表的业务对象的上级是隶属于该业务对象。这种方案的优点是:能够灵活定义业务对象之间的树型关系,而且改变业务对象之间的关系也比较简单,只需要改变业务对象的parentid即可。这种方案存在的问题是:在使用此类对象的包含下级时,基本不能直接支持;在一些需要根据规则加载一个子树时,程序处理比较复杂,通常需要使用递归算法,需要多次访问数据库,这样不仅使得软件开发比较复杂,而且应用的性能也受到影响。
2)针对树型业务实体建立了一个级次编码属性,通过级次编码的规则来标识业务数据的上下级关系或关联关系。该方案的优点是:支持包含下级业务对象时比较方便,加载一个子树的数据时也比较简单。存在的问题是:如果在需要修改上下级关系时,影响的访问数据较大,所有的下级数据的级次编码均需修改,对于业务的另一个影响是应用中不能直接使用编码,因为编码是不稳定的。
因此,需要一种生成业务对象的方式,来避免上述两种方法中不能兼顾直接支持包含下级业务对象和直接使用编码的问题。
发明内容
鉴于以上,本发明所要解决的技术问题在于,提供一种生成业务实体的多个业务对象的内部级次编码的方法和系统,来解决不能直接支持包含下级业务对象和直接使用编码的问题。
本发明提供了一种生成业务实体的多个业务对象的内部级次编码的方法,所述业务实体包括多个实例化的业务对象,包括:步骤S102,选择所述业务实体,设置所述业务实体的多个业务对象的内部级次编码规则;步骤S104,根据所述内部级次编码规则生成所述内部级次编码。通过该技术方案,可以根据预先设置的级次编码规则生成所选定的业务实体的内部级次编码,能够简化程序的开发,通过一次遍历即可完成对整个树型的构造。
在上述技术方案中,优选地,进一步包括:步骤S106,在所述内部级次编码的字段的长度不够的情况下,设置所述业务实体的新内部级次编码规则;步骤S108,根据所述新内部级次编码规则,生成新内部级次编码。通过该技术方案,能够根据业务对象的变化,只需重新设置业务实体的级次编码规则就能得到相应的业务对象的内部级次编码,操作简单。
在上述技术方案中,优选地,在新增业务对象的情况下:如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码,其中所述第一SQL语句包括产生Sequence的SQL语句和根据Sequence产生内部级次编码的SQL语句,所述第二SQL语句包括在当前对象的父对象下产生新的Sequence的SQL语句和根据父对象和新的Sequence产生内部级次编码的SQL语句。
在上述技术方案中,优选地,在删除业务对象的情况下:记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。通过该技术方案,可以进行新增业务对象和删除业务对象,根据编码规则得到重新排列的内部级次编码。
在上述技术方案中,优选地,在插入节点的情况下:先执行以下过程:
如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。
在上述技术方案中,优选地,在移动节点的情况下,记录移动前后位置的两个父节点的信息:
移动前的处理过程如下:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码;
移动后的处理过程如下:
先执行以下过程:
如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。通过该技术方案,可以进行插入和移动的动作,准确的完成级次编码排列,生成内部级次编码。
本发明还提供了一种生成业务对象的内部级次编码的系统,所述业务实体的实例包括多个业务对象,包括:内部级次编码规则设置模块,选择所述业务实体,设置所述业务实体的多个业务对象的内部级次编码规则;以及内部级次编码生成模块,根据所述内部级次编码规则生成所述内部级次编码。通过该技术方案,可以根据预先设置的级次编码规则生成所选定的业务实体的内部级次编码,能够简化程序的开发,通过一次遍历即可完成对整个树型的构造。
在上述技术方案中,优选地,进一步包括:新内部级次编码规则设置模块,在所述内部级次编码的字段的长度不够的情况下,设置所述业务对象的新内部级次编码规则;新内部级次编码生成模块,根据所述新内部级次编码规则,生成新内部级次编码。通过该技术方案,可以进行新增业务对象、删除业务对象、移动节点和插入节点,根据编码规则得到重新排列的准确内部级次编码。
通过上述技术方案,能够实现一种生成业务对象的内部级次编码的方法和系统,根据应用的需要,灵活地对业务对象的内部级次编码的每段长度进行定制,设置灵活的编码规则,得到重新排列的内部级次编码,保持内部级次编码的合理性,能够进行新增业务对象、删除业务对象、移动节点和插入节点,通过一次遍历即可完成对整个树型的构造,简化程序的开发。
附图说明
图1是根据本发明的一个实施例的生成业务对象的内部级次编码的方法的流程图;
图2是根据本发明的又一实施例的生成业务对象的内部级次编码的系统的框图;
图3是根据本发明的又一实施例的生成业务对象的内部级次编码的方法的功能模块示意图;以及
图4是根据本发明的又一实施例的生成业务对象的内部级次编码的方法的设置内部级次编码规则的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图1是根据本发明的一个实施例的生成业务实体的内部级次编码的方法的流程图。
如图1所示,根据本发明的一种生成业务对象的内部级次编码的方法,所述业务实体包括多个业务对象,包括:步骤S102,选择所述业务实体,设置所述业务实体的内部级次编码规则;步骤S104,根据所述内部级次编码规则生成所述内部级次编码。通过这样的技术方案,可以根据预先设置的级次编码规则生成所选定的业务实体的内部级次编码,能够简化程序的开发,通过一次遍历即可完成对整个树型的构造。
在上述技术方案中,进一步包括:步骤S106,在所述内部级次编码的字段的长度不够的情况下,设置所述业务对象的新内部级次编码规则;步骤S108,根据所述新内部级次编码规则,生成新内部级次编码。因此,能够根据业务实体的变化,只需重新设置业务实体的级次编码规则就能得到相应的业务对象的内部级次编码,操作简单。
在上述技术方案中,在新增业务对象的情况下:如果所述业务实体没有业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码。
在上述技术方案中,在删除业务对象的情况下:记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。通过该技术方案,可以进行新增业务对象和删除业务对象,根据编码规则得到重新排列的内部级次编码。
在上述技术方案中,在插入节点的情况下:先执行以下过程:
如果所述业务实体没有业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。
在上述技术方案中,在移动节点的情况下,记录移动前后位置的两个父节点的信息:
移动前的处理过程如下:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码;
移动后的处理过程如下:
先执行以下过程:
如果所述业务实体没有业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码。这样,就可以进行插入和移动的动作,准确的完成级次编码排列,生成内部级次编码。
图2是根据本发明的又一实施例的生成业务对象的内部级次编码的系统的框图。
如图2所示,根据本发明的一种生成业务对象的内部级次编码的系统200,所述业务实体包括多个业务对象,包括:内部级次编码规则设置模块202,选择所述业务实体,设置所述业务实体的内部级次编码规则;以及内部级次编码生成模块204,根据所述内部级次编码规则生成所述内部级次编码。通过这样的技术方案,可以根据预先设置的级次编码规则生成所选定的业务对象的内部级次编码,能够简化程序的开发,通过一次遍历即可完成对整个树型的构造。
在上述技术方案中,进一步包括:新内部级次编码规则设置模块,在所述内部级次编码的字段的长度不够的情况下,设置所述业务对象的新内部级次编码规则;新内部级次编码生成模块,根据所述新内部级次编码规则,生成新内部级次编码。因此,可以进行新增业务对象、删除业务对象、移动节点和插入节点,根据编码规则得到重新排列的准确内部级次编码。
通过上述方案,能够实现一种生成业务对象的内部级次编码的方法和系统,根据应用的需要,灵活地对业务对象的内部级次编码的每段长度进行定制,设置灵活的编码规则,得到重新排列的内部级次编码,保持内部级次编码的合理性,能够进行新增业务对象、删除业务对象、移动节点和插入节点,通过一次遍历即可完成对整个树型的构造,简化程序的开发。
图3是根据本发明的又一实施例的生成业务对象的内部级次编码的方法的功能模块示意图。
如图3所示,生成业务对象的内部级次编码的方法的功能模块具有内部级次编码的规则设置功能模块302,允许对业务规则进行设置,该规则应用于内部级次编码的生成;内部级次编码工具类功能模块304用于处理如何根据业务对象的关系以及关系的变化,自动生成新的内部级次编码;具有内部级次编码的业务对象功能模块306;基于内部级次编码的查询服务功能模块308,业务对象能够根据内部级次编码产生对外使用的包装过的查询服务,用于解决特定的业务问题。
首先根据该实施例的技术方案详细说明内部级次编码的规则设置功能模块302的规则设置的流程,如图4所示。
业务对象虽然具有树型关系,但是树型关系的内部级次编码的生成规则可能不同。如有些业务实体,其每个对象的每级次的数据量不会超过100个,则级次编码的每个段的长度可以设计为两位:00-99;而有些业务实体,其任一个业务对象的下级数据量可能超过100个,但不会超过1000个,则可设计该业务实体的每段编码长度为三位:000-999;设计一个指定内部编码级次规则每个段的长度参数,能够根据业务需要调整内部级次编码的生成规则,保持内部级次编码的合理性。
如果原来规划的内部级次编码的每个段的长度不够用,例如从原来的两位,需要变成三位,也是可以支持的,只需要该业务实体现有的所有业务数据按照新的编码规则,重新生成内部级次编码即可。
其具体的操作流程如下:
在步骤402,首先选择业务实体。
在步骤404,设置内部级次编码规则。
在步骤406,根据规则产生内部级次编码。
在步骤408,如果原来的设置的内部级次编码的每个段的长度不够用,则重新设置新规则。
在步骤410,根据新规则,全部重新生成内部级次编码。
接下来详细说明该实施例的内部级次编码处理工具功能模块304的作用。内部级次编码处理工具功能模块304主要解决在下面几个处理场景下,如何生成新的内部级次编码。本实施例中的技术方案主要采用SQL语句,借助数据库的能力实现内部级次编码的生成,基于这种方法能够减少数据的传递,简化应用程序的处理过程。为了更清楚本发明的技术方案,举例如下,假定主要处理的业务对象为BusinessEntity1,该实体有个内部级次编码树型innercode,在数据库中存在一个表:t_be1,表结构的创建SQL语句(以SQL Server数据库的语法为例)为:
CREATE TABLE t_be1(
[id][varchar](20)NOT NULL,
[pid][varchar](20)NOT NULL,
[code][varchar](200)NULL,
[name][varchar](200)NULL,
[sequence][varchar](20)NULL,
[innercode][varchar](100)NULL,
)
其中id为表的PK,pid为对象的ParentID,code为业务对象的编码,名称为业务对象的名称,sequence为该对象在其parentid下面排列的次序,innercode为业务对象的内部级次编码。
下面的处理已上面的业务实体BusinessEntity1,以及其对应的数据库表t_be1的字段为例进行描述,假定在功能模块302中设置的业务对象的编码规则为:每段长度为2,则处理方法描述如下:
1)新增加业务对象,如何生成内部级次编码。
假如该实体还没有业务数据,则初始状态,新增的数据id=‘01’,假定数据按照id排序,由于第一个对象没有父对象,所以其pid=|‘0’。其具体处理步骤如下:
第一步,产生Sequence。SQL语句如下
update t_be1 set sequence=(selectright(′00′+convert(varchar,count(*)),2)from t_be1as b
where t_be1.pid=b.pid and b.id<=t_be1.id)where id=′01′
第二步,根据Sequence,产生内部编码。SQL语句如下:
update t_be1 set t_be1.innercode=t.innercode from(select id,rtrim(sequence)innercode from t_be1)as t where t_be1.id=t.id andt_be1.id=′01′
假如该对象已存在数据,假定当前业务对象位为‘01’,则增加的新节点为‘02’,新节点的父节点位‘01’,则通用的生成innercode的处理步骤如下:
第一步:产生新的Sequence。SQL语句如下:
update t_be1set sequence=(select right(′00′+convert(varchar,count(*)),2)from t_be1 as b
where t_be1.pid=b.pid and b.id<=t_be1.id)where t_be1.innercode like′01%′
第二步,根据上级节点,产生排序的内部级次码:update t_be1 set t_be1.innercode=t.innercode from(select a.id id,case when b.id is null then″else rtrim(b.sequence)end+rtrim(a.sequence)innercode from t_be1 as a left join t_be1as b on a.pid=b.ID)as t where t_be1.id=t.id and t_be1.innercode like′01%′
如果按名称排序生成sequence,则SQL语句调整如下:
update t_be1 set sequence=(select right(′00′+convert(varchar,count(*)),2)from t_be1 as b
where t_be1.pid=b.pid and b.name<=t_be1.name)
2)删除一个业务对象,如何产生内部级次编码。
删除业务对象的情况也比较简单,记录当前节点的父节点的innercode,或根据父节点的id,查找到父节点的innercode。具体处理步骤如下:
第一步,处理当前节点的父节点下的所有Sequence;update t_be1 set sequence=(select right(′00′+convert(varchar,count(*)),2)from t_be1as b
where t_be1.pid=b.pid and b.id<=t_be1.id)where t_be1.innerinnercodelike′父节点的innercode′
第二步,根据上级节点,产生排序的内部级次码,处理过程如下:
首选根据父节点的innercode,父节点下数据表中最长的层次-父节点所在的层次,两个层次的差值再加1,用于构造产生内部级次编码的SQL语句:根据层次生成left join的层次,以及case语句的层次。
假定目前节点是innercode=‘010101’的节点,其父节点的innercode=‘0101’,‘0101’的所有下级节点的innercode最长的是‘01010201’。则父节点的innercode的层次为2,最长的层次是4。根据这些要求,按照处理过程构造的SQL语句示例如下:update t_be1 set t_be1.innercode=substring(′0101′,1,len(′0101′)-2)+t.innercode from(select a.id id,
case when c.id is null then″else rtrim(c.sequence)end+
case when b.id is null then″else rtrim(b.sequence)end+
rtrim(a.sequence)innercodefrom t_be1as a left Join(t_be1 as b left Join t_be1as c on b.pid=c.ID andc.innercode like′0101′+′%′)on a.pid=b.ID and b.innercode like′0101%′where a.innercode like′0101′+′%′)as t where t_be1.id=t.id andt_be1.innercode like′0101′+′%′
根据上面产生的SQL语句将能够恰好重新生成删除节点的父节点的所有下级节点的对象数据的内部级次编码innercode的值。
3)插入一个节点,如何处理受影响的innercode。
基于1)和2)的处理方法,插入节点的处理相对比较简单:先按1)中的增加处理新插入的节点,按照2)中的方法处理本节点下的所有节点的innercode。
4)移动一个节点,如何处理受影响的innercode。
移动一个节点,需要记录移动前后位置的两个父节点的信息。移动前的处理使用2)的方法。移动后的处理采用3)中的方法。
上面的操作以工具类的方式,提供增加、删除、插入、移动等服务接口,在工具类中封装上面提到的处理生成内部级次编码的方法。
最后,说明本实施例中的基于内部级次编码的查询服务功能模块308和具有内部级次编码的业务对象的功能模块306的使用。
在用户修改具有树型关系业务实体的业务对象的上下级关系、修改应用业务对象排序的属性值时,需要同时调用内部级次编码处理工具功能模块304中对应的新增、删除、插入、移动等生成内部级次编码的服务。这样就能够在内部以编码的方式自动记载数据的上下级关系(或树型关系)。
在实现了上面的开发工作后,每个此类业务实体可以提供通过内部级次编码提供的业务服务。例如,可以提供LoadData()方法,Load数据时按照内部级次编码:“…order by innercode”来准备数据,这样就可以按照深度优先顺序的遍历方法,一次构造出树型模型;可以提供包含下级数据的查询方法GetSubDatabyID(B0,bo),基于内部级次编码,通过简单的条件SQL语句”…whereinnercode like  ‘当前对象的innercode’+’%’”即可实现。
下面简单举例来说明基于内部级次编码的查询服务功能模块308的服务接口的内部实现:基于业务对象的内部级次编码来查询需要的业务数据将比较简单。例如需要访问innercode=‘0101’下的所有数据:
Select*from t_be1 where innercode like‘0101%’
假如使用对象的id作为条件进行查询,则使用如下的SQL语句:
Select*from t_be1 where innercode like(select innercode fromt_be1where id=′03′)+′%′即可完成数据的查询。
以上,参考图1至图4的详细说明,通过上述技术方案,可以实现一种生成业务对象的内部级次编码的方法和系统,能够非常方便地用于业务对象具有树型关系的业务实体。该系统具有良好的扩展能力,软件的开发人员、实施人员可以根据应用的需要,灵活地对业务实体的内部级次编码的每段长度进行定制,而具有内部级次编码的业务实体能够方便地提供一些业务场景的使用,如查询中的条件定义时可包含下级;能够高效地实现业务对象数据的加载;能够简化程序的开发,使用内部级次编码,通过一次遍历即可完成对整棵树的构造等。
本发明的生成内部级次编码的方法,采用基于SQL的方式解决问题,充分利用了数据库的处理能力,不仅简化了软件的开发,提高了程序的效率,而且扩展了系统的应用场景,对于管理软件中那些具有上下级关系的业务实体来说具有较好的应用价值。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种生成业务实体的多个业务对象的内部级次编码的方法,所述业务实体包括多个实例化的所述业务对象,其特征在于,包括:
步骤S102,选择所述业务实体,设置所述业务实体的所述多个业务对象的内部级次编码规则;
步骤S104,根据所述内部级次编码规则生成所述内部级次编码;
其中,在删除业务对象的情况下:记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码,其中,ID是业务对象的标识;
在新增业务对象的情况下:如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码,其中所述第一SQL语句包括产生Sequence的SQL语句和根据Sequence产生内部级次编码的SQL语句,所述第二SQL语句包括在当前对象的父对象下产生新的Sequence的SQL语句和根据父对象和新的Sequence产生内部级次编码的SQL语句;
其中,ID是业务对象的标识,PID为该业务对象的ParentID,Sequence为该业务对象在其ParentID下面排列的次序,而ParentID表示该ID代表的业务对象的上级是隶属于该业务对象。
2.根据权利要求1所述的方法,其特征在于,进一步包括:
步骤S106,在所述内部级次编码的字段的长度不够的情况下,设置所述业务实体的新内部级次编码规则;
步骤S108,根据所述新内部级次编码规则,生成新内部级次编码。
3.根据权利要求1或2所述的方法,其特征在于,在插入节点的情况下:
先执行以下过程:
如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码,其中所述第一SQL语句包括产生Sequence的SQL语句和根据Sequence产生内部级次编码的SQL语句,所述第二SQL语句包括在当前对象的父对象下产生新的Sequence的SQL语句和根据父对象和新的Sequence产生内部级次编码的SQL语句;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码;
其中,ID是业务对象的标识,PID为该业务对象的ParentID,Sequence为该业务对象在其ParentID下面排列的次序,而ParentID表示该ID代表的业务对象的上级是隶属于该业务对象。
4.根据权利要求1或2所述的方法,其特征在于,在移动节点的情况下,记录移动前后位置的两个父节点的信息:
移动前的处理过程如下:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码;
移动后的处理过程如下:
先执行以下过程:
如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码,其中所述第一SQL语句包括产生Sequence的SQL语句和根据Sequence产生内部级次编码的SQL语句,所述第二SQL语句包括在当前对象的父对象下产生新的Sequence的SQL语句和根据父对象和新的Sequence产生内部级次编码的SQL语句;
然后执行以下过程:
记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码;
其中,ID是业务对象的标识,PID为该业务对象的ParentID,Sequence为该业务对象在其ParentID下面排列的次序,而ParentID表示该ID代表的业务对象的上级是隶属于该业务对象。
5.一种生成业务实体的多个业务对象的内部级次编码的系统,所述业务实体包括多个实例化的所述业务对象,其特征在于,包括:
内部级次编码规则设置模块,选择所述业务实体,设置所述业务实体的所述多个业务对象的内部级次编码规则;以及
内部级次编码生成模块,根据所述内部级次编码规则生成所述内部级次编码;
其中,在删除业务对象的情况下:记录当前节点的父节点的内部级次编码,或者根据所述当前节点的所述父节点的ID,查找到所述父节点的所述内部级次编码,处理所述当前节点的所述父节点下的所有节点的SQL语句,根据上级节点产生排序的内部级次编码,其中,ID是业务对象的标识;
在新增业务对象的情况下:如果所述业务实体没有实例化的业务对象,则进行状态初始化,将新增数据的ID设置为“01”,将所述新增数据的PID设置为“0”,产生第一SQL语句,根据所述第一SQL语句产生所述内部级次编码;如果所述业务实体具有实例化的业务对象,则产生第二SQL语句,根据所述第二SQL语句产生所述内部级次编码,其中所述第一SQL语句包括产生Sequence的SQL语句和根据Sequence产生内部级次编码的SQL语句,所述第二SQL语句包括在当前对象的父对象下产生新的Sequence的SQL语句和根据父对象和新的Sequence产生内部级次编码的SQL语句;
其中,ID是业务对象的标识,PID为该业务对象的ParentID,Sequence为该业务对象在其ParentID下面排列的次序,而ParentID表示该ID代表的业务对象的上级是隶属于该业务对象。
6.根据权利要求5所述的系统,其特征在于,进一步包括:
新内部级次编码规则设置模块,在所述内部级次编码的字段的长度不够的情况下,设置所述业务对象的新内部级次编码规则;
新内部级次编码生成模块,根据所述新内部级次编码规则,生成新内部级次编码。
CN 201010292020 2010-09-26 2010-09-26 生成业务对象的内部级次编码的方法和系统 Active CN101976242B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010292020 CN101976242B (zh) 2010-09-26 2010-09-26 生成业务对象的内部级次编码的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010292020 CN101976242B (zh) 2010-09-26 2010-09-26 生成业务对象的内部级次编码的方法和系统

Publications (2)

Publication Number Publication Date
CN101976242A CN101976242A (zh) 2011-02-16
CN101976242B true CN101976242B (zh) 2012-12-05

Family

ID=43576128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010292020 Active CN101976242B (zh) 2010-09-26 2010-09-26 生成业务对象的内部级次编码的方法和系统

Country Status (1)

Country Link
CN (1) CN101976242B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768673B (zh) * 2012-06-12 2016-04-20 北大方正集团有限公司 一种可扩展的xml数据节点标识号码的编码方法及装置
CN106021427B (zh) * 2016-05-16 2022-01-07 中国银行股份有限公司 一种动态交互方法、装置及系统
CN111158972B (zh) * 2019-12-05 2020-08-25 连连银通电子支付有限公司 一种开关状态确定方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364288A (zh) * 2008-09-03 2009-02-11 于万钦 基于soa架构的bom容器构建方法
CN101388040A (zh) * 2008-11-05 2009-03-18 金蝶软件(中国)有限公司 一种数据结构管理方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364288A (zh) * 2008-09-03 2009-02-11 于万钦 基于soa架构的bom容器构建方法
CN101388040A (zh) * 2008-11-05 2009-03-18 金蝶软件(中国)有限公司 一种数据结构管理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
武新华等.基础信息设置.《用友ERP-U8财务管理实务(8.7X版)》.清华大学出版社,2008, *

Also Published As

Publication number Publication date
CN101976242A (zh) 2011-02-16

Similar Documents

Publication Publication Date Title
CN106528129B (zh) 一种Web应用界面生成系统及方法
CN101477526B (zh) 一种实现统计报表定制的方法及系统
CN110929042B (zh) 一种基于电力企业的知识图谱构建和查询方法
CN104200402A (zh) 一种电网多个数据源的源数据发布方法及系统
CN102567932A (zh) 综合资源管理方法、装置和系统
CN102819557B (zh) 数据查询处理装置和数据查询处理方法
CN104767642B (zh) 基于gis平台的odn配线管理方法及系统
CN105849726A (zh) 用于高效地支持通过分层标记数据的即席查询的通用索引
CN105447253B (zh) 一种三维工艺数据的集成方法
CN103049251B (zh) 一种数据库持久层装置及数据库操作方法
CN104346377A (zh) 一种基于唯一标识的数据集成和交换方法
CN104035754A (zh) 一种基于xml的自定义代码生成方法及生成器
CN103530407B (zh) 一种富文本文档的生成方法与装置
CN104408134A (zh) 一种sql到云环境的映射方法及系统
CN102279848A (zh) 生成报表模板的方法与装置
WO2007136959A2 (en) Apparatus and method for recursively rationalizing data source queries
CN101719135A (zh) 一种政务资源目录控制系统及方法
CN102222148A (zh) 自动生成三维装配图的明细表的方法及装置
CN103123660B (zh) 一种对软硬件系统cad图形化建模的方法
CN101976242B (zh) 生成业务对象的内部级次编码的方法和系统
CN105630500A (zh) 一种用于数据处理的cim对象模型及其编程框架
CN101548281A (zh) 控制关系数据库系统的方法
CN104881739A (zh) 一种基于iec61970/61968 cim标准的营配数据一致性校验方法
CN113486418B (zh) 一种bim模型云编码方法及系统
CN102402515A (zh) 通用自定义查询系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: YONYOU NETWORK TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: UFIDA SOFTWARE CO., LTD.

CP03 Change of name, title or address

Address after: 100094 Haidian District North Road, Beijing, No. 68

Patentee after: Yonyou Network Technology Co., Ltd.

Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Patentee before: UFIDA Software Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Shi Zhoujun

Inventor after: Qiu Dongqiang

Inventor before: Shi Zhoujun