Usando o Construtor de expressões, é possível criar expressões ou condições que executam cálculos em valores de dados fornecidos pelo Dicionário de dados ou por usuários finais. O Gerenciamento de correspondência usa o resultado da avaliação da expressão para selecionar ativos, como texto, imagens, listas e condições, e inseri-los na correspondência, conforme necessário.
O Construtor de expressões usa internamente as bibliotecas EL JSP, de modo que a expressão adere à sintaxe JSPEL. Para obter mais informações, consulte Expressões de exemplo.
Os operadores disponíveis para uso em expressões estão disponíveis na barra superior do construtor de expressões.
Estes são alguns exemplos de JSP EL comumente usados que você pode usar em sua solução de Gerenciamento de correspondência:
Você pode encontrar mais informações na Especificação JSP EL. O gerenciador de expressões do lado do cliente não é compatível com determinadas variáveis e funções na especificação JSP EL, especificamente:
Índices de coleção e chaves de mapa (usando o [] notação) não são suportadas em nomes de variáveis para expressões avaliadas no lado do cliente.
A seguir estão os tipos de parâmetros ou tipos de retorno de funções usadas em expressões:
As funções remotas fornecem a capacidade de usar lógica personalizada em expressões. Você pode gravar uma lógica personalizada para ser usada na expressão como um método em Java e a mesma função pode ser usada dentro de expressões. As funções remotas disponíveis são listadas na guia "Funções remotas", no lado esquerdo do Editor de expressão.
Você pode criar um pacote personalizado para exportar suas próprias funções remotas para uso dentro de expressões. Para criar um pacote personalizado para exportar suas próprias funções remotas, execute as seguintes tarefas. Ele demonstra como gravar uma função personalizada que utiliza a letra maiúscula da string de entrada.
Defina uma interface para o serviço OSGi que contenha métodos que estão sendo exportados para uso pelo Gerenciador de expressões.
Declare métodos na interface A e anote-os com a anotação @ServiceMethod (com.adobe.exm.exval.ServiceMethod). O Gerenciador de expressões ignora quaisquer métodos não anotados. A anotação ServiceMethod tem os seguintes atributos opcionais que também podem ser especificados:
package mergeandfuse.com;
import com.adobe.exm.expeval.ServiceMethod;
public interface RemoteFunction {
@ServiceMethod(enabled=true,displayName="Returns_all_caps",description="Function to convert to all CAPS", familyId="remote")
public String toAllCaps(String name);
}
Os parâmetros dos métodos também podem ser anotados opcionalmente usando a anotação @ServiceMethodParameter (com.adobe.exm.exval.ServiceMethodParameter). Essa anotação é usada apenas para especificar nomes legíveis em humanos e descrições de parâmetros de método para uso na interface do usuário de criação. Verifique se os parâmetros e valores de retorno dos métodos da interface pertencem a um dos seguintes tipos:
Defina a implementação da interface, configure-a como um serviço OSGI e defina as seguintes propriedades do serviço:
@org.apache.felix.scr.annotations.Properties({
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker", boolValue = true),
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker.alias", value = "<service_id>"),
@org.apache.felix.scr.annotations.Property(name = "exm.service", boolValue = true)})
A entrada exm.service=true instrui o Gerenciador de expressões, de que o serviço contém funções remotas adequadas para uso em expressões. O <service_id> deve ser um identificador Java válido (alfanumérico,$, _ sem outros caracteres especiais). Esse valor, com o prefixo REMOTE_ keyword, forma o prefixo usado dentro de expressões. Por exemplo, uma interface com um método anotado bar() e o ID de serviço das propriedades do serviço podem ser referenciados dentro de expressões usando REMOTE_foo:bar().
package mergeandfuse.com;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
@Component(metatype = true, immediate = true, label = "RemoteFunctionImpl")
@Service(value = RemoteFunction.class)
@org.apache.felix.scr.annotations.Properties({
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker", boolValue = true),
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker.alias", value = "test1"),
@org.apache.felix.scr.annotations.Property(name = "exm.service", boolValue = true)})
public class RemoteFuntionImpl implements RemoteFunction {
@Override
public String toAllCaps(String name) {
System.out.println("######Got######"+name);
return name.toUpperCase();
}
}
Abaixo estão os arquivos de amostra a serem usados:
GoodFunctions.jar.zip
GoodFunctions.zip