跳转到主要内容
maxiaoan 提交于 5 September 2014

原文链接:Migrate API in Drupal 8

Drupal 8 中的API迁移

注:截至2013年12月, 迁移API还在编写中,尚未完成。 本文档将大致介绍一下API,但期望在drupal 8发布前进行更新。

概述

迁移API提供了把数据从一个地方迁移到另一个地方(通常,导入整个Drupal实体[entities]中)的服务。 迁移模块实现了通用的框架,然而“Drupal迁移”是建立在从Drupal 6、Drupal 7、Drupal 8 一个升级路径基础之上。

理解迁移的最简单的方法是首先导入:源插件(source plugin)提供了行。 每一行是交给一系列进程插件(process plugins),最后直到插件保存到目的地(迁移地点)。

对于每一行,源、目的地都拥有属性和属性值。 例如,当导入节点, sticky是一个属性,可能值为0和1。 有一些属性是标识符,例如用户或者零售商的uid,产品进口的SKU。

标识符使我们能够跟踪变化等等。 一旦目的地插件保存,行和目的地标识符值就是可知的,我们保存源标识符的值,目的地标识符和行表的值就会存在在一个标识符(id)地图。 源标识符和行标(row hash)表允许对连续性迁移进行跟踪变化。 源标识符和目的地标识符允许查找值基于之前的迁移——如果源用户的uid值为44,到目的地之后它的uid值变为56,那么源节点uid 44可以查找到 目的地uid 为56的数值。

Highwater marks提供另一种跟踪变化的方法。 这就要求源(highwater 属性)告诉我们什么时候源记录的最后变化,如节点的change属性。 如果有一个highwater属性我们可以导入的改变了顺序,并保存了最后一次成功导入的时间戳记录。

所有的配置保存在整个迁移配置中。

配置通常包含四个关键部分:id、源、过程和迁移地。 第一个是一个简单的字符串,迁移的标识符。 其余部分我们将在各自的子页面中进行讨论。

这儿有一个关于实体迁移 的教程。