Configurar a sessão compartilhada usando o pacote SDK

O pacote SDK fornece configuração para que os usuários do SDK possam criar e utilizar sessões compartilhadas. As sessões são perfeitamente compartilhadas entre os diferentes bots para compartilhar recursos entre eles. Isto significa que, se uma sessão for criada, as outras Task Bots poderão ler e atualizar a sessão e vice-versa.

Compartilhar sessão entre pai e filho

A seção seguinte descreve a criação de uma sessão compartilhada. O bot pai GlobalSessionDemoUpperCaseParent retorna um Valor da sessão para a sessão global e é usado pelo bot filho GlobalSessionDemoUpperCaseChild.
Nota: Coloque as três classes abaixo no local a seguir: <PackageSDK>\src\main\java\com\automationanywhere\botcommand\samples\commands\basic
  1. Crie a seguinte classe POJO DemoForSession que implementa CloseableSessionObject.

    package com.automationanywhere.botcommand.samples.commands.basic.GlobalSessionSampleProject;
    
    import com.automationanywhere.toolchain.runtime.session.CloseableSessionObject;
    
    import java.io.IOException;
    
    public class DemoForSession implements CloseableSessionObject
    {
        public void setClose(boolean close) {
            this.close = close;
        }
    
        boolean close=false;
        public String getDemo() {
            return demo;
        }
    
        public void setDemo(String demo) {
            this.demo = demo;
        }
        public DemoForSession(String demo){
            this.demo=demo;
        }
        String demo;
    
        @Override
        public boolean isClosed() {
            return close;
        }
    
        @Override
        public void close() throws IOException {
    
        }
    }
    
  2. Adicione a anotação @BotCommand para tornar uma classe em uma Ação na Sala de Controle. Para mais informações sobre as anotações, consulte Anotações.
    @BotCommand
  3. Adicione a anotação @CommandPkg para definir todos os componentes relacionados com a IU - rótulos, descrição, ícone, return_type e nome. Os elementos return_label, return_settings, return_type e return_required pertencentes ao @CommandPkg garantem que a SESSÃO seja retornada pelo bot pai.
    @CommandPkg(
    		//Unique name inside a package and label to display.
    		name = "GlobalSession", label = "Global session uppercase parent",
    		node_label = "Shared session parent node label", description = "Shared session parent description", icon = "pkg.svg",
    		
    		//Return type information. return_type ensures only the right kind of variable is provided on the UI. 
    		return_label = "Return the parent session",
    		return_settings = {ReturnSettingsType.SESSION_TARGET},
    		return_type = SESSION,
    		return_required = true)
  4. Crie o objeto GlobalSessionDemoUpperCaseParent. O GlobalSessionDemoUpperCaseParent obtém uma entrada de strings minúsculas a partir da entrada da ação, converte-a para strings maiúsculas e armazena o resultado no SessionValue.

    • Anote o método com @Execute para executar o método durante a compilação.

      package com.automationanywhere.botcommand.samples.commands.basic.GlobalSessionSampleProject;
      
      import com.automationanywhere.botcommand.data.impl.SessionValue;
      import com.automationanywhere.commandsdk.annotations.*;
      import com.automationanywhere.commandsdk.annotations.rules.NotEmpty;
      import com.automationanywhere.commandsdk.model.ReturnSettingsType;
      import org.apache.logging.log4j.LogManager;
      import org.apache.logging.log4j.Logger;
      
      import java.util.Map;
      
      import static com.automationanywhere.commandsdk.model.AttributeType.TEXT;
      import static com.automationanywhere.commandsdk.model.DataType.SESSION;
      
      
      //BotCommand makes a class eligible for being considered as an action.
      @BotCommand
      
      //CommandPks adds required information to be dispalable on GUI.
      @CommandPkg(
      		//Unique name inside a package and label to display.
      		name = "GlobalSession", label = "Global session uppercase parent",
      		node_label = "Shared session parent node label", description = "Shared session parent description", icon = "pkg.svg",
      		
      		//Return type information. return_type ensures only the right kind of variable is provided on the UI. 
      		return_label = "Return the parent session",
      		return_settings = {ReturnSettingsType.SESSION_TARGET},
      		return_type = SESSION,
      		return_required = true)
      public class GlobalSessionDemoForStringUpperCaseParent {
      	private static Logger logger = LogManager.getLogger(GlobalSessionDemoForStringUpperCaseParent.class);
      
      	//Identify the entry point for the action. Returns a SessionValue because the return_type is SESSION. 
      	@Execute
      	public SessionValue action(
      			//Idx 1 would be displayed first, with a text box for entering the value.
      			@Idx(index = "1", type = TEXT) 
      			//UI labels.
      			@Pkg(label = "Enter string in lower case")
      			//Ensure that a validation error is thrown when the value is null.
      			@NotEmpty 
      			String firstString) {
      		String result = firstString.toUpperCase();
      		DemoForSession demoForSession= new DemoForSession(result);
      		return SessionValue
      				.builder()
      				.withSessionObject(demoForSession)
      				.build();
      	}
      }
  5. Crie o objeto GlobalSessionDemoUpperCaseChild. O GlobalSessionDemoUpperCaseChild obtém uma entrada de strings minúsculas a partir da entrada da ação, converte-a para maiúsculas e concatena-a com a SessionValue recebida do bot pai.

    package com.automationanywhere.botcommand.samples.commands.basic.GlobalSessionSampleProject;
    
    import com.automationanywhere.botcommand.data.Value;
    import com.automationanywhere.botcommand.data.impl.StringValue;
    import com.automationanywhere.botcommand.samples.commands.basic.Uppercase;
    import com.automationanywhere.commandsdk.annotations.*;
    import com.automationanywhere.commandsdk.annotations.rules.NotEmpty;
    import com.automationanywhere.commandsdk.annotations.rules.SessionObject;
    import com.automationanywhere.commandsdk.model.AttributeType;
    import com.automationanywhere.commandsdk.model.DataType;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import static com.automationanywhere.commandsdk.model.AttributeType.TEXT;
    import static com.automationanywhere.commandsdk.model.DataType.STRING;
    
    
    //BotCommand makes a class eligible for being considered as an action.
    @BotCommand
    
    //CommandPks adds required information to be dispalable on GUI.
    @CommandPkg(
    		//Unique name inside a package and label to display.
    		name = "GlobalSessionChild", label = "Global session upper case child",
    		node_label = "Global session child node label",
    		description = "Global session child description", icon = "pkg.svg",
    		
    		//Return type information. return_type ensures only the right kind of variable is provided on the UI. 
    		return_label = "Return the concatenated string to", return_type = STRING, return_required = true)
    public class GlobalSessionDemoUpperCaseChild {
    	private static Logger logger = LogManager.getLogger(Uppercase.class);
    	
    	@Execute
    	public Value<String> action(
    			//Idx 1 would be displayed first, with a text box for entering the value.
    			@Idx(index = "1", type = TEXT) 
    			//UI labels.
    			@Pkg(label = "Enter a sting in lower case to concatenate")
    			//Ensure that a validation error is thrown when the value is null.
    			@NotEmpty 
    			String sourceString,
    			@Idx(index = "2", type = AttributeType.SESSION)
    			@Pkg(label = "sharedSession", description = "sharedSession",
    					default_value = "Default", default_value_type = DataType.SESSION)
    			//Using the sessionObject annotation here as its a consumer class
    					@SessionObject
    					DemoForSession session) {
    
    		//Business logic
    		String result = sourceString.toUpperCase();
    		logger.info("session: {}",session);
    		return new StringValue(result+session.getDemo().toUpperCase());
    	}
    }
  6. Construa e carregue o pacote personalizado para a Sala de Controle. Para mais informações sobre o carregamento do pacote, consulte Como usar o pacote SDK.
  7. Crie um bot usando a ação Sessão global em maiúsculas pai.
    1. Insira uma string minúscula (por exemplo: parentbot string)
    2. Insira um nome para a sessão. O bot pai retorna o valor para a sessão Global (por exemplo: Global)
  8. Crie um Task Bots usando a ação Sessão global em maiúsculas filho. Você poderá inserir uma string minúscula e também obter a string da sessão pai compartilhada. Concatene as strings pai e filho.
  9. Use uma Caixa de mensagens para mostrar a saída.

    A imagem mostra a demonstração do SDK Variável

  10. Agora chame o Sessão global maiúscula filho no pai. A imagem mostra a demonstração do SDK Variável
  11. Execute o bot pai e você verá a caixa de mensagens mostrando o valor do bot filho que ele derivou usando a sessão global compartilhada.