Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Liferay Kaleo Workflow com atribuição por categorias

30 visualizaciones

Publicado el

Apresentação no 6º Encontro de Liferay Portugal Users Group sobre a utilização de workflows Kaleo em Liferay com atribuição de tarefas por configuração de categorias e scripting em groovy

Publicado en: Software
  • Sé el primero en comentar

Liferay Kaleo Workflow com atribuição por categorias

  1. 1. Liferay Portugal Users Group 6º Encontro Liferay® é uma marca registada de Liferay, Inc. Construindo uma comunidade mais forte Utilização das Categorias na atribuição automática de Workflows A utilização de propriedades nas categorias de conteúdos para decidir a atribuição automática de tarefas num workflow Fernando Fernandez
  2. 2. 2 Tópicos ● Para que servem os workflows ● Vantagens de usar o Kaleo ● Workflow Single Approver ● Edição de workflows no Liferay IDE ● Conceitos de workflows ● Utilização de scripts nos workflows ● Atribuição configurável pelo utilizador - Roles ● Alternativa: Categorias e Propriedades ● Implementação
  3. 3. Para que servem os workflows ● Para coordenar as intervenções de humanos e sistemas sobre um conjunto de dados ● Para garantir o cumprimento de regras internas e externas ● Para gerir num sistema centralizado e controlável os processos de uma organização
  4. 4. Vantagens de usar o Kaleo ● Kaleo é o motor de Workflow embebido no Liferay ● Workflows podem ser editados no Liferay IDE ● Os conteúdos do Liferay podem ser submetidos a um workflow ● Os utilizadores do Liferay são envolvidos no Workflow ● O interface do Liferay já inclui notificações e écrans de gestão das tarefas ● As aplicações desenvolvidas sobre Liferay podem aproveitar a integração e usar os seus workflows no contexto do portal
  5. 5. Workflow Single Approver ● Workflow de default do Liferay ● Autor submete conteúdo, responsável aprova para publicação ou devolve para correcção
  6. 6. Edição no Liferay IDE ● A definição do workflow é um ficheiro XML que descreve estados, tarefas, etc ● Liferay IDE, em Eclipse, permite edição assistida
  7. 7. 7 Criação do workflow
  8. 8. Conceitos de workflows ● Tipos de Nós: – Estado – representa um estado do processo sem atribuição a ninguém – Tarefa – representa um estado em que o processo está atribuído a alguém – Transição – o caminho entre dois nós do fluxo – Condição – automatiza a decisão entre transições – Fork – divide a execução em duas linhas paralelas – Join – concentra linhas paralelas de execução numa só linha
  9. 9. Conceitos de workflows (2) ● Propriedades dos Nós: – Action: uma acção (script) a executar quando o fluxo entra, sai do nó ou este é atribuído – Notification: um alerta enviado para o(s) utilizador(es) por correio ou pelo site – Assignment: a atribuição de uma tarefa a um utilizador ou a um papel/perfil, pré-definida ou programada por script – Timer: a execução de acções de notificação, reatribuição ou scripts genéricos após certo tempo
  10. 10. Utilização de scripts nos workflows ● Programação em Groovy, Javascript, etc. Pode ser embutida em vários pontos do workflow
  11. 11. Atribuição a Roles ● Roles (papéis/perfis) podem ser atribuídos a utilizadores ou grupos de utilizadores ● São configurados para terem certas permissões e tarefas ● Workflow tem que ser construído com referência explícita, fixa, aos roles
  12. 12. Maior flexibilidade ● E se os Roles pudessem estar associados às Categorias dos artigos? ● Entram as Propriedades – pares chave+valor associados a cada categoria, editáveis por qualquer administrador de conteúdos ● Um script no workflow pode ler o role da categoria e fazer a atribuição que lá esteja configurada
  13. 13. Implementação ● Caso de uso: publicação de artigos sobre hardware ou software, com revisão por roles diferentes consoante a categoria ● Criação de 2 Roles: HardwareReviewer, SoftwareReviewer ● Atribuição de 2 Users para os Roles: Steve e Bill ● Criação de 2 Categorias: Hardware e Software ● Obrigatoriedade de categorização dos artigos ● Construção do workflow com atribuição por script (derivado do single-approver original)
  14. 14. O script ● Objectivo: preenchimento da variável “roles” ● Utilização de logging para debug ● Elementos de contexto em workflowContext (Map) ● API: JournalArticleLocalServiceUtil, AssetEntryLocalServiceUtil, AssetCategoryPropertyLocalServiceUtil, RoleLocalServiceUtil –
  15. 15. Script (2) - código roles = new ArrayList<Role>(); Log logr = LogFactoryUtil.getLog("WorkflowScript"); logr.info("Workflow Assignment Script Running..."); long companyId = Long.parseLong((String)workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID)); long articleId = Long.parseLong((String)workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK)); String articleClassName = (String) workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_NAME); long articlePK = JournalArticleLocalServiceUtil.getArticle(articleId).getResourcePrimKey(); AssetEntry articleAssetEntry = AssetEntryLocalServiceUtil.getEntry(articleClassName, articlePK); AssetCategory cat = articleAssetEntry.getCategories().get(0); List<AssetCategoryProperty> propList = AssetCategoryPropertyLocalServiceUtil.getCategoryProperties(cat.getCategoryId()); Role categoryRole = RoleLocalServiceUtil.getRole(companyId, propList.get(0).getValue()); roles.add(categoryRole); logr.info("Assigning to "+categoryRole.getName()); user = null;
  16. 16. Script (3) - imports import com.liferay.asset.category.property.model.AssetCategoryProperty; import com.liferay.asset.kernel.model.AssetCategory; import com.liferay.asset.kernel.model.AssetEntry; import com.liferay.journal.model.JournalArticle; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.RoleConstants; import com.liferay.portal.kernel.model.User; import com.liferay.asset.category.property.service.AssetCategoryPropertyLocalServiceUtil; import com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil; import com.liferay.journal.service.JournalArticleLocalServiceUtil; import com.liferay.portal.kernel.service.RoleLocalServiceUtil; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portal.kernel.exception.PortalException;
  17. 17. Revisão ● Conceitos de workflows ● Vantagens do Liferay Kaleo Workflow ● Criação de um workflow ● Programação da atribuição de tarefas com Groovy e API Liferay ● Exemplo de funcionamento
  18. 18. Workflows: https://portal.liferay.dev/docs/7-1/user/-/knowledge_base/u/leveraging-the-script-engine-in-workflow https://liferay.dev/blogs/-/blogs/workflow-scripting-programmatic-task-assignment-1 LPUG: Meetup: https://www.meetup.com/Liferay-Portugal-User-Group/ Linkedin: https://www.linkedin.com/groups/12125960/ Youtube: https://www.youtube.com/channel/UCOJiHlf2FNDpdV_zifzqXnA Mais info

×