Configurar la sesión compartida mediante el paquete SDK

El paquete SDK proporciona la configuración para que los usuarios de SDK puedan crear y usar sesiones compartidas. Las sesiones se comparten sin problemas entre diferentes bots para compartir recursos entre ellos. Esto significa que si se ha creado una sesión, los otros Bots de tarea pueden leer y actualizar la sesión y viceversa.

Sesión compartida entre el elemento primario y secundario

La siguiente sección describe la creación de una sesión compartida. El elemento primario GlobalSessionDemoUpperCaseParent devuelve un valor de la sesión a la sesión global y el bot secundario GlobalSessionDemoUpperCaseChild la usa.
Nota: Coloque las tres clases a continuación en la siguiente ubicación: <PackageSDK>\src\main\java\com\automationanywhere\botcommand\samples\commands\basic
  1. Cree la siguiente DemoForSession de clase POJO que implemente 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. Agregue la anotación @BotCommand para hacer una clase como una Acción en Control Room. Para obtener más información sobre anotaciones, consulte Anotaciones.
    @BotCommand
  3. Agregue la anotación @CommandPkg para definir todos los componentes relacionados con la interfaz de usuario: etiquetas, descripción, ícono, return_type y nombre. Los elementos return_label, return_settings, return_type y return_required que pertenecen al @CommandPkg aseguran que la SESIÓN se devuelva a través del bot primario.
    @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. Cree el objeto GlobalSessionDemoUpperCaseParent. GlobalSessionDemoUpperCaseParent obtiene una entrada de cadena de caracteres en minúsculas de la entrada de la acción, la convierte en una cadena de caracteres en mayúsculas y almacena el resultado en SessionValue.

    • Anote el método con @Execute para ejecutar el método durante la compilación.

      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. Cree el objeto GlobalSessionDemoUpperCaseChild. GlobalSessionDemoUpperCaseChild obtiene una entrada de cadena en minúsculas de la acción, la convierte a mayúsculas y la concatena con el SessionValue recibido del bot primario.

    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. Cree y cargue el paquete personalizado en Control Room. Para obtener más información sobre cómo cargar el paquete, consulte Uso del paquete SDK.
  7. Cree bot utilizando la acción Elemento primario en mayúsculas de la sesión global.
    1. Ingrese una cadena en minúsculas (Por ejemplo: cadena parentbot)
    2. Introduzca un nombre para la sesión. El bot primario devuelve el valor a la sesión Global (Por ejemplo: Global)
  8. Cree Bots de tarea utilizando la acción Elemento secundario en mayúsculas de la sesión global. Podrá entrar una cadena en minúsculas y también obtener la cadena de la sesión primaria compartida. Concatenar las cadenas primarias y secundarias.
  9. Use un Cuadro de mensajes para mostrar la salida.

    La imagen muestra el SDK Demo variable

  10. Ahora llame al Elemento secundario en mayúsculas de la sesión global dentro del elemento primario. La imagen muestra el SDK Demo variable
  11. Ejecute el bot primario y verá el cuadro de mensajes que muestra el valor del bot secundario que derivó utilizando la sesión global compartida.