2015-07-23 1 views
0

Я надеюсь, что кто-то испытал это раньше.Как восстановить данные в Alfresco после изменения модели данных

У меня есть модель данных в Alfresco, которая определяет несколько типов и несколько аспектов.

Для примера типа X имеет обязательные аспекты A и B.

В рамках разработки моего приложения на вершине, мне нужно, чтобы добавить новый аспект типа X. Но когда я добавляю свой новый обязательный аспект и развертывание My amp, все существующие данные для типа X больше не будут отображаться в моих новых запросах, пытающихся присоединиться к аспекту X.

Кто-нибудь знает, как можно исправить это?

В идеале можно запустить какой-либо скрипт, который будет анализировать модель, сопоставить имена типов и применять любые отсутствующие аспекты к экземплярам этого типа. Таким образом, модель может эволюционировать с одним сценарием для разработки данных, и все наши запросы могут развиваться с помощью модели данных в последовательном пути.

Вот пример ...

Так позволяет сказать, что у нас есть этот запрос для нашего типа X

SELECT P:nameSpace:aspect.nameSpace.propertyA 
FROM nameSpace:typeX AS primary 
JOIN nameSpace:aspect AS P:nameSpace:aspect 
     ON primary.cmis:objectId=P:nameSpace:aspect.cmis:objectId 

В любое время мы делаем объект X мы будем всегда аспект применяется с ним является обязательным. Теперь через несколько недель мы добавим обязательный аспект2. И нам нужно свойство B от него ...

SELECT P:nameSpace:aspect.nameSpace.propertyA, P:nameSpace:aspect2.nameSpace.propertyB 
FROM nameSpace:typeX AS primary 
JOIN nameSpace:aspect AS P:nameSpace:aspect 
     ON primary.cmis:objectId=P:nameSpace:aspect.cmis:objectId 
JOIN nameSpace:aspect2 AS P:nameSpace:aspect2 
     ON primary.cmis:objectId=P:nameSpace:aspect2.cmis:objectId 

Наш запрос эволюционировала с нашей моделью данных, но старые экземпляры typeX не будут возвращены, так как они не имеют aspect2 применять еще. Наша теория заключается в том, что мы можем запускать скрипт для применения отсутствующих аспектов без управления версиями; и плавно развивать наш контент с помощью нашего приложения.

+0

Не могли бы вы опубликовать свой запрос? На самом деле этого не должно быть. – mitpatoliya

+0

Действительно? Мы видим это довольно регулярно, я верю. Это в том случае, когда мы создаем кучу объекта x и запрос с неотъемлемыми аспектами. Тогда в будущем, когда объект x имеет новый обязательный аспект ... И теперь наши запросы присоединяются, наши старые объекты x не имеют этого аспекта. Я попытаюсь опубликовать пример в моем вопросе в ближайшее время. – TheNorthWes

+0

Спасибо @mitpatoliya. Я добавил пример – TheNorthWes

ответ

1

Хорошо, у меня возникла ваша проблема, поэтому ваш запрос делает обязательным иметь оба аспекта содержания, и именно поэтому он не отображает старое содержимое, поскольку у них нет этого нового аспекта B. Я вижу два варианта борьбы с ним.

  1. Вы можете создать правило в корневой папке и с помощью этого добавить этот аспект в все существующее содержимое. Это довольно простое решение.
  2. Вы можете изменить запрос таким образом, что он старый размещать до содержимого, может быть через влево внутреннее соединение. (Я не очень хорошо с запросами :))
+0

Можете ли вы указать ресурс для опции 1? Насколько нам известно, нет возможности левого внутреннего соединения; и мы хотим обеспечить целостность данных в нашей модели и наших методах кодирования. – TheNorthWes

Смежные вопросы