2014-10-22 1 views
0

Я довольно новый для XProc и XPATH, но меня попросили решить следующую проблему:XProc - Приостановка трубопровода и продолжить его, когда определенное событие происходит

Шаг 2 принимает данные через вторичный порт из этап 1. Этап 2 содержит p:for-each, который сохраняет документ в папке для каждого элемента, который передает каждый для каждого. (Часть A)

Эти документы (скажем, я получаю 6 документов из-за каждого) лежат в одном каталоге и фильтруются по p:directory-list и в конечном итоге хранятся в одном документе, содержащем весь путь каждого документа. для каждого созданного. (Часть B)

Пока что так хорошо.

Проблема в том, что часть A кажется слишком медленной. Часть B уже пытается прочитать данные. Шаг A хранит, пока каталог все еще пуст. Смысл, у меня проблема с производительностью/синхронизацией.

И теперь возникает вопрос: Возможно ли, чтобы трубопровод подождал и продолжил его, как только произойдет определенное событие?

Вот что я представляю: Шаг B ждет столько, сколько необходимо, до тех пор, пока каталог, в котором находится элемент A, не сохранит данные. Я читал кое-что о dbxml:breakpoint, но, к сожалению, я не мог найти больше информации, чем имя и краткое описание того, что он, кажется, делает:

Установить точку останова, в случае необходимости, основываясь на состоянии, что приведет к трубопроводу чтобы приостановить работу в точке останова, что может потребовать вмешательства пользователя для продолжения и/или выдачи сообщения.

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

UPDATE:

После поиска Google на половину вечности, я обнаружил, SMIL, которые это табелей, кажется, сделать трюк. Кто-нибудь сталкивается с тем, что вместе с XML/xProc и SMIL?

ответ

0

Назад к концу 2009 года Я предложил концепцию «Orchestration XProc with SMIL» http://broadcast.oreilly.com/2009/09/xproc-and-smil-orchestrating-p.html в блоге в сети O'Reilly.

Однако я не уверен, что это (XProc + Time) является решением вашей проблемы. Мне не совсем ясно, от вас описание того, что происходит. Вы подразумеваете, что пытаетесь написать что-то на диск, а затем прочитать его на следующем шаге? Вам нужно сохранить материал в конвейере, чтобы обеспечить возможность подключения выходов к последующим входам.