Personalizar a atribuição de notificação de tarefa

O componente Atribuir tarefa é usado para atribuir tarefas a participantes do fluxo de trabalho. Quando uma tarefa é atribuída a um usuário ou grupo, uma notificação por email é enviada ao usuário ou aos membros do grupo definidos.
Normalmente, essa notificação por email conterá dados dinâmicos relacionados à tarefa. Esses dados dinâmicos são obtidos usando as propriedades de metadados geradas pelo sistema.
Para incluir valores dos dados de formulário enviados na notificação por email, precisamos criar propriedade de metadados personalizada e usar essas propriedades de metadados personalizadas no modelo de email

Criação da propriedade de metadados personalizada

A abordagem recomendada é criar um componente OSGI que implementa o método getUserMetadata do WorkitemUserMetadataService

O código a seguir cria quatro propriedades de metadados(firstName,lastName,reason e amountRequested) e define seu valor a partir dos dados enviados. Por exemplo, o valor da propriedade de metadados firstName é definido como o valor do elemento chamado firstName a partir dos dados enviados. O código a seguir parte do princípio de que os dados enviados do formulário adaptável estão no formato xml. Os formulários adaptáveis com base no esquema JSON ou no Modelo de dados de formulário geram dados no formato JSON.

package com.aemforms.workitemuserservice.core;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.jcr.Session;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;

import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.*;


import com.adobe.fd.workspace.service.external.WorkitemUserMetadataService;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.metadata.MetaDataMap;
@Component(property={Constants.SERVICE_DESCRIPTION+"=A sample implementation of a user metadata service.",
Constants.SERVICE_VENDOR+"=Adobe Systems",
"process.label"+"=Sample Custom Metadata Service"})


public class WorkItemUserServiceImpl implements WorkitemUserMetadataService {
private static final Logger log = LoggerFactory.getLogger(WorkItemUserServiceImpl.class);

@Override
public Map<String, String> getUserMetadata(WorkItem workItem, WorkflowSession workflowSession,MetaDataMap metadataMap)
{
HashMap<String, String> customMetadataMap = new HashMap<String, String>();
String payloadPath = workItem.getWorkflowData().getPayload().toString();
String dataFilePath = payloadPath + "/Data.xml/jcr:content";
Session session = workflowSession.adaptTo(Session.class);
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document xmlDocument = null;
javax.jcr.Node xmlDataNode = null;
try
{
    xmlDataNode = session.getNode(dataFilePath);
    InputStream xmlDataStream = xmlDataNode.getProperty("jcr:data").getBinary().getStream();
    XPath xPath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
    factory = DocumentBuilderFactory.newInstance();
    builder = factory.newDocumentBuilder();
    xmlDocument = builder.parse(xmlDataStream);
    Node firstNameNode = (org.w3c.dom.Node) xPath.compile("afData/afUnboundData/data/firstName")
            .evaluate(xmlDocument, javax.xml.xpath.XPathConstants.NODE);
    log.debug("The value of first name element  is " + firstNameNode.getTextContent());
    Node lastNameNode = (org.w3c.dom.Node) xPath.compile("afData/afUnboundData/data/lastName")
            .evaluate(xmlDocument, javax.xml.xpath.XPathConstants.NODE);
    Node amountRequested = (org.w3c.dom.Node) xPath
            .compile("afData/afUnboundData/data/amountRequested")
            .evaluate(xmlDocument, javax.xml.xpath.XPathConstants.NODE);
    Node reason = (org.w3c.dom.Node) xPath.compile("afData/afUnboundData/data/reason")
            .evaluate(xmlDocument, javax.xml.xpath.XPathConstants.NODE);
    customMetadataMap.put("firstName", firstNameNode.getTextContent());
    customMetadataMap.put("lastName", lastNameNode.getTextContent());
    customMetadataMap.put("amountRequested", amountRequested.getTextContent());
    customMetadataMap.put("reason", reason.getTextContent());
    log.debug("Created  " + customMetadataMap.size() + " metadata  properties");

}
catch (Exception e)
{
    log.debug(e.getMessage());
}
return customMetadataMap;
}

}

Usar as propriedades de metadados personalizados no modelo de email de notificação de tarefa

No modelo de email, você pode incluir a propriedade de metadados usando a seguinte sintaxe, onde amountRequested é a propriedade de metadados ${amountRequested}

Configurar Atribuir tarefa para usar a propriedade de metadados personalizada

Depois que o componente OSGi for criado e implantado no servidor AEM, configure o componente Atribuir tarefa como mostrado abaixo para usar propriedades de metadados personalizadas.

Notificação de tarefa

Ativar o uso de propriedades de metadados personalizados

Propriedades de metadados personalizados

Para experimentar isso no servidor

A notificação de atribuição de tarefa de envio de formulário é enviada para a ID de email associada ao usuário administrador. A captura de tela a seguir mostra um exemplo de notificação de atribuição de tarefa

Notificação

OBSERVAÇÃO

O modelo de email para a notificação de tarefa de atribuição precisa estar no seguinte formato.

assunto=Tarefa Atribuída - ${workitem_title}

message=String que representa seu modelo de email sem caracteres de nova linha.

Nesta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now