Как сделать Custom Deployer для записи данных в базу данных MS SQL?
Я добавил пользовательский модуль в процессор по умолчанию в config/cd_deployer_conf.xml:
<Processor Action="Deploy" Class="com.tridion.deployer.Processor">
...
<Module Type="MyCustomModuleDeploy" Class="com.tridion.new.extensions.MyCustomModule">
</Module>
</Processor>
Код для модуля выглядит примерно так:
public class MyCustomModule extends com.tridion.deployer.modules.PageDeploy {
static Logger logger = Logger.getLogger("customDeployerFirst");
public MyCustomModule(Configuration config, Processor processor)
throws ConfigurationException {
super(config, processor);
// TODO Auto-generated constructor stub
}
public void processPage(Page page, File pageFile) throws ProcessingException {
// TODO Auto-generated method stub
Date d = new Date();
log.info("WORKING");
log.info("Page ID: " + page.getId().toString());
log.info("Publication date: "+ d.toString());
}
}
В моем лог-файле я получаю нужную информацию каждый раз, когда страница публикуется.
Далее я хочу записать идентификатор страницы и дату публикации в моей базе данных Microsoft SQL в ранее созданной таблице. Как я могу это сделать? Как я могу получить доступ к таблице базы данных из MyCustomModule?
Спасибо
2 ответа
Итак, то, что я сделал здесь, чтобы решить мою проблему, - именно то, что предложил Куиринн. Использовал драйвер JDBC для подключения к моей базе данных, а затем выполнил запрос обновления sql:
int sqlStatement = st.executeUpdate("insert into Pages values ('" + page.getId().toString()+ "', '" + ... + "')");
Таким образом, каждый раз, когда страница публикуется, некоторые данные будут записываться в мою базу данных.
Не уверен в ваших требованиях, но вы уже выбрали модель расширения для развертывания по сравнению с расширениями хранилища. С расширениями хранилища Tridion предоставит модель того, как вы можете расширять хранилища (например, JPAFramework и Base DAOEntities, которые вы можете расширять). Если вы идете по пути расширения развертывания, как отмечали Квирин и Нуно, это похоже на написание стандартного кода JDBC, как и любое другое приложение.
Но я бы посоветовал вам также взглянуть на модель расширения хранилища и посмотреть, соответствует ли она вашим требованиям. Очень хорошая отправная точка - взглянуть на статью ниже: http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx