Para Desenvolvedores

Acessar o source de outro serviço dentro de um ProcessAction

Resolvido

Tenho um serviço X que ao adicionar um item, preciso obter os dados de um serviço Y, atualmente consegui fazer um um Process Action que chama um DAO para acessar a tabela do serviço Y porém gostaria de saber se pela API do Lumis de Content Manager, é possível acessar o source de outro serviço via Java para obter os dados.

Por Alan Loiola

Em 28/11/19 11:40

Acompanhar pergunta

5 resposta(s):

Ordenar por:

Segui em anexo um arquivo com várias JUnit tests que chama API de Content Manager Source.  Aqui você pode ver muitos exemplos do uso do API.

Por Kishnan Nedungadi

Em 05/12/19 08:46

Do exemplo acima, consegui pegar os dados do source e os itens a partir de um ID, porém não consigo pegar a lista de itens independente do ID do conteúdo, teria alguma forma de obter a lista de itens? segue o trecho de codigo que ultilizei para obter os dados.

ContentTableSource source = (ContentTableSource) SourceFactory.createSource("default", ID);
source.readData(itemId)

Por Alan Loiola

Em 08/01/20 13:45

Alan,

Se o serviço for content (eu suponho que seja, pelo código da sua resposta anterior), você pode fazer:

String serviceInstanceId = "XXXXXXXXXXXXXX";
Collection<String> itemIds =
	ManagerFactory.getEntityManager()
	.createQuery("select cv.itemId from ContentVersion cv " +
			"inner join cv.contentLocale cl " +
			"inner join cl.content c " +
			"where cl.publishedVersion = cv and " +
			"c.serviceInstanceId = :sii")
	.setParameter("sii", serviceInstanceId)
	.getResultList();

Isso te retornará a lista de itemIds da sua instância de serviço. Com eles, você pode usar o Source.read(..).

Agora, se sua tabela de negócio estiver mapeada no Hibernate (se houver uma entidade para a tabela), o mais performático seria incluir no select acima mais um join para já trazer o conteúdo da tabela de negócio.

Atenciosamente

Por Thiago Berne

Em 20/02/20 15:16

Olá, Pelo codigo comentado acima pelo Berne, consegui obter os dados, porém também pelo seguinte codigo:

				TabularSource<?> sourceWhitelist = (TabularSource<?>)SourceFactory.createSource("whitelist", idService);
					
					sourceWhitelist.setMaxRows(100);
					sourceWhitelist.load();
					}
					
					//Obtem a lista de ids
					for (ISourceData fatherRow : sourceWhitelist.getData().getRows()) {
						
						Object id = fatherRow.get("id");						
						Object contentIdReferenced = fatherRow.get("referencedContentId");
				

						}
					}

 

Por Alan Loiola

Em 20/02/20 16:46

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.