Стратегия Marklogic CPF - PullRequest
       9

Стратегия Marklogic CPF

0 голосов
/ 27 сентября 2018

Для операции вставки / обновления документа в коллекции у меня включен CPF.Я хочу убедиться, что в моем CPF, если я изменяю другой документ, я не хочу, чтобы он добавлялся в очередь CPF.Как мне этого добиться?

Например: например, в моей очереди CPF есть следующие документы

d1,d2,d3,d4,d5

Скажите в моей задаче CPF для d1, япришлось обновить документ d4.Какое состояние CPF мне нужно установить, чтобы d4 не был добавлен в конец очереди CPF ... но d4, если он уже присутствует в очереди, следует продолжить с обычным процессом CPF.

Можетэто будет сделано?если так, то какой хорошей стратегией будет следовать.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

CPF всегда будет автоматически запускаться на d4, если он обновляется и находится в области действия домена, но инфраструктура включает в себя код, позволяющий убедиться, что он одновременно работает только с документом в одном состоянии.Таким образом, он поднимает d4 и начинает работать над ним, а затем срабатывает еще один триггер d4, который в конечном итоге ничего не делает.Я думаю, что способ кадрировать это: после обработки d4, как я могу пометить его, чтобы он не обрабатывался снова?Если это в процессе, вам не нужно беспокоиться об этом.Если он находится в завершенном процессе, вам нужно перевести его в состояние терминала (т. Е. В состояние, в котором нет переходов в каком-либо соответствующем конвейере).

Если вы попытаетесь обновить d4 таким образом, чтобы он не долженбыть активированным, все это означает, что вы задали условие гонки для работы, выполненной при первом запуске d4, и я не рекомендовал бы пытаться это делать.Все условия гонки действительно сложно разгадать.

0 голосов
/ 28 сентября 2018

Вы можете сделать некоторые трюки с коллекциями, если вы определяете свои домены CPF через них.

Например, предположим, у вас есть набор документов в коллекции под названием «синий», и вы хотите применить к ним конвейер CPF.Но исходя из ваших требований, оно должно быть условным.Поэтому вместо того, чтобы иметь домен CPF с коллекцией «синих», сделайте его «зеленым».Затем используйте триггер предварительной фиксации для создания / изменения в «синей» коллекции, чтобы также добавить документ в «зеленый», вызывая тем самым конвейер CPF (который также может удалить документ из «зеленого»).Но триггер предварительной фиксации может сказать - если документ уже «красным», то я не буду добавлять его в «зеленый».

Чтобы использовать это, ваш конвейер CPF может затем добавить d4 к «красному», сообщая триггеру предварительной фиксации, что также не следует добавлять d4 к «зеленому».Если d4 уже горит зеленым, это нормально - конвейер CPF все равно будет работать, как вы хотите.

...