如何在Tridion2011中编写deployer扩展的组件取消部署和二进制取消部署功能
我只是想编写一个小型的deployer扩展,如果用户从tridion发布/取消发布页面/组件/二进制文件,它的记录将使用存储扩展进入特定的表中 存储扩展部分已经完成 我可以很容易地编写PageDeploy/ComponentDeploy和BinaryDeploy,因为我在com.tridion.deployer.modules中有这些类 我还可以轻松地编写自定义页面取消部署类,但是很难编写组件、二进制取消部署,因为我们没有任何此类 请建议是否可能,如果可能,请指示我编写类或方法来获得它如何在Tridion2011中编写deployer扩展的组件取消部署和二进制取消部署功能,tridion,tridion-2011,tridion-content-delivery,tridion-deploy-extension,Tridion,Tridion 2011,Tridion Content Delivery,Tridion Deploy Extension,我只是想编写一个小型的deployer扩展,如果用户从tridion发布/取消发布页面/组件/二进制文件,它的记录将使用存储扩展进入特定的表中 存储扩展部分已经完成 我可以很容易地编写PageDeploy/ComponentDeploy和BinaryDeploy,因为我在com.tridion.deployer.modules中有这些类 我还可以轻松地编写自定义页面取消部署类,但是很难编写组件、二进制取消部署,因为我们没有任何此类 请建议是否可能,如果可能,请指示我编写类或方法来获得它 谢谢。是
谢谢。是的,没有您自己发现的组件取消部署或二进制取消部署
Frank举了一个很好的例子,说明如何扩展二进制存储以跟踪取消部署事件,对于组件,您必须使用ComponentPresentationUndeploy。是的,您自己发现没有组件取消部署或二进制取消部署
Frank提供了一个很好的示例,说明如何扩展二进制存储以跟踪取消部署事件,对于组件,您必须使用ComponentPresentationUndeploy。下面是跟踪DAO中组件和二进制的示例代码 组件:要添加的示例代码以及更新和删除的示例代码
@Component("JPAComponentDAOExtension")
@Scope("prototype")
public class JPAComponentDAOExtension extends JPAComponentPresentationDAO implements ComponentPresentationDAO
{
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(ComponentPresentation itemToCreate, ComponentPresentationTypeEnum componentPresentationType) throws StorageException
{
super.create(itemToCreate,componentPresentationType);
String tcmURI = Integer.toString(itemToCreate.getComponentId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(itemToCreate.getPublicationId(),StorageTypeMapping.COMPONENT_META);
ComponentMeta meta = (ComponentMeta) item.findByPrimaryKey(itemToCreate.getPublicationId(),itemToCreate.getComponentId());
String schemaID = Integer.toString(meta.getSchemaId()) ;
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setTcmUri(tcmURI);
publishAction.setSchemaID(schemaID);
publishActionDAO.store(publishAction);
}
}
@Component("JPABinaryDAOExtension")
@Scope("prototype")
public class JPABinaryDAOExtension extends JPABinaryContentDAO implements BinaryContentDAO
{
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(final BinaryContent binaryContent, final String relativePath) throws StorageException
{
super.create(binaryContent, relativePath);
String url = relativePath;
String tcmURI = Integer.toString(binaryContent.getBinaryId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(binaryContent.getPublicationId(),StorageTypeMapping.BINARY_META);
BinaryMeta binarymeta = (BinaryMeta) item.findBinaryByPrimaryKey(binaryContent.getPublicationId(),binaryContent.getBinaryId());
binarymeta.getBinaryType();//to get the binary type
//You can also check the Relative path as below for specific binary type entries as suggested by Mihai
if (relativePath.toLowerCase().endsWith(".pdf")) //Looking for PDFs only
{
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setUrl(url);
publishAction.setTcmUri(tcmURI);
publishActionDAO.store(publishAction);
}
}
}
二进制:添加示例代码,更新和删除示例代码
@Component("JPAComponentDAOExtension")
@Scope("prototype")
public class JPAComponentDAOExtension extends JPAComponentPresentationDAO implements ComponentPresentationDAO
{
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(ComponentPresentation itemToCreate, ComponentPresentationTypeEnum componentPresentationType) throws StorageException
{
super.create(itemToCreate,componentPresentationType);
String tcmURI = Integer.toString(itemToCreate.getComponentId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(itemToCreate.getPublicationId(),StorageTypeMapping.COMPONENT_META);
ComponentMeta meta = (ComponentMeta) item.findByPrimaryKey(itemToCreate.getPublicationId(),itemToCreate.getComponentId());
String schemaID = Integer.toString(meta.getSchemaId()) ;
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setTcmUri(tcmURI);
publishAction.setSchemaID(schemaID);
publishActionDAO.store(publishAction);
}
}
@Component("JPABinaryDAOExtension")
@Scope("prototype")
public class JPABinaryDAOExtension extends JPABinaryContentDAO implements BinaryContentDAO
{
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(final BinaryContent binaryContent, final String relativePath) throws StorageException
{
super.create(binaryContent, relativePath);
String url = relativePath;
String tcmURI = Integer.toString(binaryContent.getBinaryId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(binaryContent.getPublicationId(),StorageTypeMapping.BINARY_META);
BinaryMeta binarymeta = (BinaryMeta) item.findBinaryByPrimaryKey(binaryContent.getPublicationId(),binaryContent.getBinaryId());
binarymeta.getBinaryType();//to get the binary type
//You can also check the Relative path as below for specific binary type entries as suggested by Mihai
if (relativePath.toLowerCase().endsWith(".pdf")) //Looking for PDFs only
{
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setUrl(url);
publishAction.setTcmUri(tcmURI);
publishActionDAO.store(publishAction);
}
}
}
下面是跟踪DAO中的组件和二进制文件的示例代码 组件:要添加的示例代码以及更新和删除的示例代码
@Component("JPAComponentDAOExtension")
@Scope("prototype")
public class JPAComponentDAOExtension extends JPAComponentPresentationDAO implements ComponentPresentationDAO
{
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(ComponentPresentation itemToCreate, ComponentPresentationTypeEnum componentPresentationType) throws StorageException
{
super.create(itemToCreate,componentPresentationType);
String tcmURI = Integer.toString(itemToCreate.getComponentId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(itemToCreate.getPublicationId(),StorageTypeMapping.COMPONENT_META);
ComponentMeta meta = (ComponentMeta) item.findByPrimaryKey(itemToCreate.getPublicationId(),itemToCreate.getComponentId());
String schemaID = Integer.toString(meta.getSchemaId()) ;
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setTcmUri(tcmURI);
publishAction.setSchemaID(schemaID);
publishActionDAO.store(publishAction);
}
}
@Component("JPABinaryDAOExtension")
@Scope("prototype")
public class JPABinaryDAOExtension extends JPABinaryContentDAO implements BinaryContentDAO
{
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(final BinaryContent binaryContent, final String relativePath) throws StorageException
{
super.create(binaryContent, relativePath);
String url = relativePath;
String tcmURI = Integer.toString(binaryContent.getBinaryId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(binaryContent.getPublicationId(),StorageTypeMapping.BINARY_META);
BinaryMeta binarymeta = (BinaryMeta) item.findBinaryByPrimaryKey(binaryContent.getPublicationId(),binaryContent.getBinaryId());
binarymeta.getBinaryType();//to get the binary type
//You can also check the Relative path as below for specific binary type entries as suggested by Mihai
if (relativePath.toLowerCase().endsWith(".pdf")) //Looking for PDFs only
{
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setUrl(url);
publishAction.setTcmUri(tcmURI);
publishActionDAO.store(publishAction);
}
}
}
二进制:添加示例代码,更新和删除示例代码
@Component("JPAComponentDAOExtension")
@Scope("prototype")
public class JPAComponentDAOExtension extends JPAComponentPresentationDAO implements ComponentPresentationDAO
{
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPAComponentDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(ComponentPresentation itemToCreate, ComponentPresentationTypeEnum componentPresentationType) throws StorageException
{
super.create(itemToCreate,componentPresentationType);
String tcmURI = Integer.toString(itemToCreate.getComponentId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(itemToCreate.getPublicationId(),StorageTypeMapping.COMPONENT_META);
ComponentMeta meta = (ComponentMeta) item.findByPrimaryKey(itemToCreate.getPublicationId(),itemToCreate.getComponentId());
String schemaID = Integer.toString(meta.getSchemaId()) ;
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setTcmUri(tcmURI);
publishAction.setSchemaID(schemaID);
publishActionDAO.store(publishAction);
}
}
@Component("JPABinaryDAOExtension")
@Scope("prototype")
public class JPABinaryDAOExtension extends JPABinaryContentDAO implements BinaryContentDAO
{
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(final BinaryContent binaryContent, final String relativePath) throws StorageException
{
super.create(binaryContent, relativePath);
String url = relativePath;
String tcmURI = Integer.toString(binaryContent.getBinaryId());
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(binaryContent.getPublicationId(),StorageTypeMapping.BINARY_META);
BinaryMeta binarymeta = (BinaryMeta) item.findBinaryByPrimaryKey(binaryContent.getPublicationId(),binaryContent.getBinaryId());
binarymeta.getBinaryType();//to get the binary type
//You can also check the Relative path as below for specific binary type entries as suggested by Mihai
if (relativePath.toLowerCase().endsWith(".pdf")) //Looking for PDFs only
{
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("ADD");
publishAction.setUrl(url);
publishAction.setTcmUri(tcmURI);
publishActionDAO.store(publishAction);
}
}
}
@努诺..谢谢你的回复!!这里的目标是,早些时候我们在ITEMS表上有自定义触发器来更新我们的新表PUBLISH_操作,以便在ITEM表中有任何insert/update/delete时获取页面、组件和二进制文件的所有条目。由于这不是正确的方法,因为它导致了支持合同,我正在尝试使用存储扩展来完成它,存储扩展已经完成,现在我已经编写了部署器扩展来为DAO类添加值,页面已经完成,因为我们有取消部署和部署方法,正在为bianry和componentm而奋斗,请建议!!我还可以创建自定义存储扩展类,如JPAComponentDAOExtension,它将扩展JPAComponentPresentationDAO并实现ComponentPresentationDAO,以执行上述添加/删除/更新组件的活动,并使用存储将这些值放入我的新数据库表中extension@Nuno..thanks请回复!!这里的目标是,早些时候我们在ITEMS表上有自定义触发器来更新我们的新表PUBLISH_操作,以便在ITEM表中有任何insert/update/delete时获取页面、组件和二进制文件的所有条目。由于这不是正确的方法,因为它导致了支持合同,我正在尝试使用存储扩展来完成它,存储扩展已经完成,现在我已经编写了部署器扩展来为DAO类添加值,页面已经完成,因为我们有取消部署和部署方法,正在为bianry和componentm而奋斗,请建议!!我还可以创建自定义存储扩展类,如JPAComponentDAOExtension,它将扩展JPAComponentPresentationDAO并实现ComponentPresentationDAO,以执行上述添加/删除/更新组件的活动,并使用存储扩展将这些值放入我的新数据库表中