CN104536814B - 一种处理工作流的方法和系统 - Google Patents
一种处理工作流的方法和系统 Download PDFInfo
- Publication number
- CN104536814B CN104536814B CN201510023082.6A CN201510023082A CN104536814B CN 104536814 B CN104536814 B CN 104536814B CN 201510023082 A CN201510023082 A CN 201510023082A CN 104536814 B CN104536814 B CN 104536814B
- Authority
- CN
- China
- Prior art keywords
- node
- task
- execution
- task node
- father
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种处理工作流的方法和系统,能够避免分布式系统中的单点问题,提高任务执行的可靠性。本发明的处理工作流的方法包括:保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点;遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种处理工作流的方法和系统。
背景技术
工作流(Workflow),就是业务过程的部分或整体在计算机应用环境下的自动化,它主要解决的是使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现。
现有工作流引擎技术方案中,使用关系型数据库作为工作流引擎的上下文存储系统,工作流引擎会读取数据库中保存的工作流执行状态,指派给特定的任务执行器在本地或者远程服务器节点执行这些任务,并且管理工作流中子任务的状态直到整个工作流执行结束。
上述现有技术方案中的工作流引擎存在以下不足:
所有任务的工作状态和执行器的状态都由调度器来管理,容易形成在分布式系统中的单点问题,如果调度器宕机,任务调度就可能停止,甚至造成任务状态丢失;
存储在数据库中工作流数据,将工作流有向图结构存储为表结构,对数据的查询和修改造成困难。
发明内容
有鉴于此,本发明提供一种处理工作流的方法和系统,能够避免分布式系统中的单点问题,提高任务执行的可靠性。
为实现上述目的,根据本发明的一个方面,提供了一种处理工作流的方法。
本发明的处理工作流的方法包括:保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点;遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点。
可选地,所述执行计划保存在zookeeper系统中,其中任务节点保存在zookeeper系统的持久节点中。
可选地,所述占用此任务节点的步骤包括:在此任务节点下注册子节点,该子节点类型为zookeeper系统的临时节点。
可选地,该方法还包括:在所述任务节点的执行节点中记录该任务节点的所有父节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所述执行计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况下,根据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;确认该任务节点的所有父节点都执行完成的步骤包括:确认所述任务节点的执行节点中记录的该任务节点的所有父节点的执行状态为全部已执行。
可选地,在执行该任务节点的执行节点后,还包括:在执行失败的情况下,删除该任务节点的执行节点下注册的子节点。
根据本发明的另一方面,提供了一种处理工作流的系统。
本发明的处理工作流的系统包括保存模块,以及一个或多个执行模块,其中:所述保存模块用于保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点;所述执行模块用于遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点。
可选地,所述保存模块设置在zookeeper系统中,该zookeeper系统的持久节点中保存所述任务节点。
可选地,所述执行模块还用于在遍历到任务未执行的任务节点时,在此任务节点下注册子节点,该子节点类型为zookeeper系统的临时节点。
可选地,所述执行模块还用于:在所述任务节点的执行节点中记录该任务节点的所有父节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所述执行计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况下,根据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;以及根据所述任务节点的执行节点中记录的该任务节点的所有父节点的执行状态来判断任务节点的所有父节点是否都执行完成。
可选地,所述执行模块还用于在任务节点执行失败的情况下,删除该任务节点下注册的子节点。
根据本发明的技术方案,将工作流转换为树型结构的执行计划然后发布,然后执行计划,这种方式使系统无需中心化的节点,成为一种耦合很低的系统,从而避免了单点问题,任何一个执行器宕机,都可由其他执行器来代替,从而提高了任务执行的可靠性。另外,工作流由于使用了树形结构来存储,对数据的查询和修改任务间的依赖等操作更加直观,通过使用zookeeper对降低的数据修改中的事务操作,提升了服务器性能。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的工作流引擎系统的基本结构的示意图;
图2是根据本发明实施例的工作流的将有向无环图结构转换为树型结构的示意图;
图3是根据本发明实施例的处理工作流的系统的基本结构的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的工作流引擎系统的基本结构的示意图。如图1所示,本发明实施例的工作流引擎系统可以采用zookeeper集群11和多个执行器121、122、……、12N。zookeeper存储任务状态和执行计划。执行器获取任务和修改zookeeper上的任务状态。每个执行器之间都是对等的,只要有任意一个执行器存在就能执行完任务。
zookeeper集群上数据按照二叉树树形结构存储,每个节点可以保存一定量的值。本发明使用这个特性来存储任务状态节点,每个任务状态节点数据结构如表1所示。
表1
在本发明实施例中,可由任何一个执行器根据工作流流程来发布任务。发布时首先将工作流的有向无环图结构存储为树型结构,如图2所示,图2是根据本发明实施例的工作流的将有向无环图结构转换为树型结构的示意图。图2左侧为有向无环图结构的工作流流程,右侧为将该工作流流程进行转换得到的树型结构的执行计划。
将工作流流程转换为树型结构的执行计划的一种可选方式是:如果一个任务有一个或者多个子任务,则将这一个或者多个子任务写入自己的任务子节点中;如果一个任务A有多个父任务,每个父任务节点下都要写入任务A,在父任务编号最大的节点中的子节点作为任务的执行节点。非任务执行节点的父任务信息值为1,任务执行节点的父任务信息值为实际父任务数量。如图2中,任务a有3个子任务:任务b、任务c、任务d,这3个任务写到任务a节点的子节点队列中。任务e有两个父任务:任务c和任务d,这两个任务下都要写入任务e,并将父任务列表中最后一个任务(任务d)中的子任务e作为任务e的执行节点,并在每个任务e节点中标记。这样,在图中左边的节点f(即/a/b/f)中,标记任务节点f的执行节点是/a/d/e/f,即执行节点是右边的节点f(用双圈表示)。类似地,在左边的节点e(即/a/c/e)中,标记任务节点e的执行节点是/a/d/e/。
从图2中可以看出,对于工作流流程中的具有两个父节点的节点,它们在执行计划中会重复出现在其父节点所在树支中,例如节点e既出现在树支a/c/e中,也出现在树支a/d/e/f/g中。因为树支a/d/e/f/g中的e节点具有子节点,因此将该e节点作为任务节点e的执行节点,即执行该e任务节点。而不执行树支a/c/e中的e任务节点,即该e任务节点是任务节点e的非执行节点。按照以上的方式,可保证能继续执行f、g节点。
接下来将整理好的工作流信息写入zookeeper,例如任务a、任务d、任务e的任务节点信息(其中任务e的任务节点信息是其执行节点的信息)分别如表2、3、4所示。这样,任务就发布完成。
表2
节点属性 | 值 |
任务执行节点 | /a |
子任务节点 | b、c、d |
父任务信息 | 0 |
任务执行状态 | None |
任务执行器状态 | None |
表3
节点属性 | 值 |
任务执行节点 | /a/d |
子任务节点 | e |
父任务信息 | 1 |
任务执行状态 | None |
任务执行器状态 | None |
表4
节点属性 | 值 |
任务执行节点 | /a/d/e |
子任务节点 | e |
父任务信息 | 2 |
任务执行状态 | None |
任务执行器状态 | None |
在任务被发布后,就可以由系统中的执行器来执行任务。可以由一个或多个执行器来执行任务,此时各个执行器遍历zookeeper中存储信息的根目录,每一个子目录代表一个子任务信息。遍历的目的是找到任务的执行器为空的节点。如果任务节点中的任务执行节点属性中的值为当前目录名,则表示当前任务节点为执行节点,否则表示当前任务节点为非执行节点。接下来执行器将自己的信息写入任务信息中,并将自己注册为任务节点下的临时节点,这样该执行器就占用了该任务节点,以免被其他执行器占用而引起逻辑冲突。然后执行器监听任务的父任务信息节点是否为0。例如某一执行器遍历到任务e的非执行节点,该执行器监听节点c的执行状态,若监听到节点c已执行完成,则将节点e的执行节点中记录的父任务信息(表4第4行)中的值减去1。从图2可以看出,若节点c执行完成,则表4第4行中的值减1;如果节点d也执行完成,则该值再减1,为0。父任务信息节点值为0则代表父任务都执行完成(对于任务节点e来说,是节点c和节点d都执行完成)。此时执行器可以领取任务信息并执行。对于每个执行节点,执行器在执行成功后将任务状态改为成功。当执行失败时,执行器删除自己的创建的节点,不改变任务状态,这时候可以由其他执行器遍历到该节点,并按照流程领取和执行任务。执行器宕机时,执行器和zookeeper的会话就会断开,临时节点会被zookeeper清除,任务将重新被其他执行器领取。
图3是根据本发明实施例的处理工作流的系统的基本结构的示意图。如图3所述,本发明实施例中的处理工作流的系统主要包括保存模块31,以及多个执行模块321、322、……32N。执行模块也可以只有一个,优选方式为两个以上,分别设置在上文中的执行器中。保存模块31用于保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点。执行模块用于遍历上述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点。
可以基于zookeeper来实现本系统。即保存模块可设置在zookeeper系统中,该zookeeper系统的持久节点中保存任务节点。这样,执行模块还可用于在遍历到任务未执行的任务节点时,在此任务节点下注册子节点,该子节点类型为zookeeper系统的临时节点。执行模块还可用于在任务节点执行失败的情况下,删除该任务节点下注册的子节点。
执行模块还用于实现如下功能:在任务节点的执行节点中记录该任务节点的所有父节点的执行状态;在任务节点的非执行节点中记录该任务节点的执行节点在执行计划中的位置;在该执行节点的父节点执行完成的情况下,修改上述执行节点中记录的该任务节点的所有父节点的执行状态;在上述非执行节点的父节点执行完成的情况下,根据该非执行节点中记录的该任务节点的执行节点在上述执行计划中的位置,修改上述执行节点中记录的该任务节点的所有父节点的执行状态;以及根据上述任务节点的执行节点中记录的该任务节点的所有父节点的执行状态来判断任务节点的所有父节点是否都执行完成。
根据本发明实施例的技术方案,将工作流转换为树型结构的执行计划然后发布,然后执行计划,这种方式使系统无需中心化的节点,成为一种耦合很低的系统,从而避免了单点问题,任何一个执行器宕机,都可由其他执行器来代替,从而提高了任务执行的可靠性。另外,工作流由于使用了树形结构来存储,对数据的查询和修改任务间的依赖等操作更加直观,通过使用zookeeper对降低的数据修改中的事务操作,提升了服务器性能。
以上结合具体实施例描述了本发明的基本原理,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种处理工作流的方法,其特征在于,应用于工作流引擎系统,所述工作流引擎系统包括多个执行器,所述方法包括:
保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点;
所述执行器遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;
所述执行器确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点;并在执行成功后修改该执行节点的任务状态。
2.根据权利要求1所述的方法,其特征在于,所述执行计划保存在zookeeper系统中,其中任务节点保存在zookeeper系统的持久节点中。
3.根据权利要求2所述的方法,其特征在于,所述占用此任务节点的步骤包括:在此任务节点下注册子节点,该子节点类型为zookeeper系统的临时节点。
4.根据权利要求2或3所述的方法,其特征在于,
该方法还包括:在所述任务节点的执行节点中记录该任务节点的所有父节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所述执行计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况下,根据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;
确认该任务节点的所有父节点都执行完成的步骤包括:确认所述任务节点的执行节点中记录的该任务节点的所有父节点的执行状态为全部已执行。
5.根据权利要求2或3所述的方法,其特征在于,在执行该任务节点的执行节点后,还包括:在执行失败的情况下,删除该任务节点的执行节点下注册的子节点。
6.一种处理工作流的系统,其特征在于,包括保存模块,以及多个执行模块,其中:
所述保存模块用于保存由包含多个任务节点的工作流转换得到的树型结构的执行计划,在该执行计划中,有多个父节点的任务节点重复地出现在其父节点所在树支中,对于重复出现的任务节点,其中具有子节点的作为该任务节点的执行节点,其他作为该任务节点的非执行节点;
所述执行模块用于遍历所述执行计划,并且在遍历到任务未执行的任务节点时占用此任务节点;确认该任务节点的所有父节点都执行完成,然后执行该任务节点的执行节点;并在执行成功后修改该执行节点的任务状态。
7.根据权利要求6所述的系统,其特征在于,所述保存模块设置在zookeeper系统中,该zookeeper系统的持久节点中保存所述任务节点。
8.根据权利要求7所述的系统,其特征在于,所述执行模块还用于在遍历到任务未执行的任务节点时,在此任务节点下注册子节点,该子节点类型为zookeeper系统的临时节点。
9.根据权利要求7或8所述的系统,其特征在于,所述执行模块还用于:在所述任务节点的执行节点中记录该任务节点的所有父节点的执行状态;在所述任务节点的非执行节点中记录该任务节点的执行节点在所述执行计划中的位置;在所述执行节点的父节点执行完成的情况下,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;在所述非执行节点的父节点执行完成的情况下,根据该非执行节点中记录的该任务节点的执行节点在所述执行计划中的位置,修改所述执行节点中记录的该任务节点的所有父节点的执行状态;以及根据所述任务节点的执行节点中记录的该任务节点的所有父节点的执行状态来判断任务节点的所有父节点是否都执行完成。
10.根据权利要求7或8所述的系统,其特征在于,所述执行模块还用于在任务节点执行失败的情况下,删除该任务节点下注册的子节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510023082.6A CN104536814B (zh) | 2015-01-16 | 2015-01-16 | 一种处理工作流的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510023082.6A CN104536814B (zh) | 2015-01-16 | 2015-01-16 | 一种处理工作流的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104536814A CN104536814A (zh) | 2015-04-22 |
CN104536814B true CN104536814B (zh) | 2019-01-22 |
Family
ID=52852346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510023082.6A Active CN104536814B (zh) | 2015-01-16 | 2015-01-16 | 一种处理工作流的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104536814B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235337B2 (en) * | 2015-06-24 | 2019-03-19 | EMC IP Holding Company LLC | Distributed work flow using database replication |
CN107784036A (zh) * | 2016-08-31 | 2018-03-09 | 北京国双科技有限公司 | 网络爬虫系统和基于网络爬虫系统的数据处理方法 |
CN108696559B (zh) * | 2017-04-11 | 2021-08-20 | 华为技术有限公司 | 流处理方法及装置 |
CN109582396B (zh) * | 2017-09-25 | 2022-02-18 | 北京国双科技有限公司 | 一种任务状态处理方法、装置、系统及存储介质 |
CN109725989B (zh) * | 2017-10-31 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN110688227A (zh) * | 2019-09-30 | 2020-01-14 | 浪潮软件股份有限公司 | 一种Oozie工作流程中尾端任务节点的处理方法 |
CN111274316B (zh) * | 2020-01-15 | 2023-08-25 | 北京明略软件系统有限公司 | 多级数据流转任务的执行方法及装置、电子设备、存储介质 |
CN111581449B (zh) * | 2020-05-18 | 2023-04-28 | 网易(杭州)网络有限公司 | 一种任务节点的执行方法、装置、计算机设备和介质 |
CN112416761B (zh) * | 2020-11-11 | 2023-07-07 | 北京京航计算通讯研究所 | 一种基于广度优先搜索的测试用例生成方法及装置 |
CN113987217A (zh) * | 2021-10-09 | 2022-01-28 | 华夏文化传媒集团股份有限公司 | 用于融媒体数据采集的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467532A (zh) * | 2010-11-12 | 2012-05-23 | 中国移动通信集团山东有限公司 | 一种任务处理方法以及任务处理装置 |
CN102739775A (zh) * | 2012-05-29 | 2012-10-17 | 宁波东冠科技有限公司 | 物联网数据采集服务器集群的监控和管理方法 |
CN102880500A (zh) * | 2011-07-13 | 2013-01-16 | 阿里巴巴集团控股有限公司 | 一种任务树的优化方法和装置 |
CN103916481A (zh) * | 2014-04-17 | 2014-07-09 | 北京京东尚科信息技术有限公司 | 一种处理数据的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6083290B2 (ja) * | 2013-03-27 | 2017-02-22 | 日本電気株式会社 | 分散処理システム |
-
2015
- 2015-01-16 CN CN201510023082.6A patent/CN104536814B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467532A (zh) * | 2010-11-12 | 2012-05-23 | 中国移动通信集团山东有限公司 | 一种任务处理方法以及任务处理装置 |
CN102880500A (zh) * | 2011-07-13 | 2013-01-16 | 阿里巴巴集团控股有限公司 | 一种任务树的优化方法和装置 |
CN102739775A (zh) * | 2012-05-29 | 2012-10-17 | 宁波东冠科技有限公司 | 物联网数据采集服务器集群的监控和管理方法 |
CN103916481A (zh) * | 2014-04-17 | 2014-07-09 | 北京京东尚科信息技术有限公司 | 一种处理数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104536814A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104536814B (zh) | 一种处理工作流的方法和系统 | |
US7899883B2 (en) | Merging versions of documents using multiple masters | |
CN101031907B (zh) | 索引处理 | |
CN104598376A (zh) | 一种数据驱动的分层自动化测试系统和方法 | |
CN106202346B (zh) | 一种数据加载清洗引擎、调度与存储系统 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及系统 | |
US8364840B2 (en) | Dynamic message routing | |
CN102279888A (zh) | 一种任务调度方法和系统 | |
CN105069033A (zh) | 一种创建数据库表模型的方法及装置 | |
RU2646349C2 (ru) | Способ и система для обработки данных | |
CN104461747B (zh) | 一种分布式任务调度系统 | |
CN104504010B (zh) | 一种多对多的数据采集系统及其采集方法 | |
CN101807073A (zh) | 一种分布式控制系统的历史数据处理方法和装置 | |
CN103795811A (zh) | 一种基于元数据保存存储信息及统计管理数据的方法 | |
CN104202383A (zh) | 一种分布式集群环境下集中配置分发管理的方法 | |
TW201140351A (en) | Flexible data archival using a model-driven approach | |
CN108881477A (zh) | 一种基于分布式的文件采集监控的方法 | |
CN109636321A (zh) | 基于协同办公平台的人力资源管理系统 | |
CN106155838B (zh) | 一种数据库备份数据恢复方法及装置 | |
CN105260297B (zh) | 一种测试数据管理系统及方法 | |
CN1996356B (zh) | 一种将xpdl格式的工作流模型转换成bpel格式的方法 | |
van Dongen et al. | EMiT: A process mining tool | |
CN114755984A (zh) | 一种自动化流程机器人的调度方法、调度系统及自动化流程机器人 | |
CN104750849B (zh) | 用于维护基于树形结构的目录关系的方法和系统 | |
CN109741034B (zh) | 一种网格树形组织管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191202 Address after: 100176 room 222, 2f, building C, No. 18, Kechuang 11th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing Patentee after: Beijing Jingdong three hundred and sixty degree e-commerce Co., Ltd. Address before: 100195 1-4 layer, 1-4 layer, western section of 11C building, building, West District, Haidian District, Beijing, China Patentee before: Beijing Jingdong Shangke Information Technology Co., Ltd. |