Lea y revise la documentación de Automation Anywhere

Automation 360

Cerrar contenidos

Contenidos

Abrir contenidos

Manejar las sesiones en un paquete personalizado

  • Actualizado: 2022/05/20
    • Automation 360 v.x
    • Crear
    • Espacio de trabajo de RPA

Manejar las sesiones en un paquete personalizado

Puede extraer una sesión utilizando un nombre de sesión del SessionsMap. En el mismo paquete, puede utilizar sesiones para pasar información entre acciones, pero no a otros paquetes.

Configure los siguientes atributos

  • Aplica una anotación al campo de la clase y añade el correspondiente setter público.
  • Recuperar el SessionsMap utilizando la función Sesiones .
  • Establecer el tipo de variable como Mapa<Cadena, Objeto>.
  • Establecer el atributoTipo: TEXTO o SESIÓN. Si tipo = TEXTOse trata de una sesión normal; si tipo = SESIÓNse trata de una sesión compartida.

Iniciar una nueva sesión

@BotCommand
@CommandPkg(label = "Start session", name = "startSession", description = "Start new session", 
icon = "pkg.svg", node_label = "start session {{sessionName}}|") public class Start {
 
    @Sessions
    private Map<String, Object> sessions;
     
    @Execute
    public void start(@Idx(index = "1", type = TEXT) @Pkg(label = "Session name", 
    default_value_type = STRING, default_value = "Default") @NotEmpty String sessionName) {
 
        // Check for existing session
        if (sessions.containsKey(sessionName))
            throw new BotCommandException(MESSAGES.getString("xml.SessionNameInUse", sessionName));
 
        // Do some operation
 
        // Create new session
        sessions.put(sessionName, new Session(operation));
    }
    public void setSessions(Map<String, Object> sessions) {
        this.sessions = sessions;
    }
}

Terminar una sesión

@BotCommand
@CommandPkg(label = "End session", name = "endSession", description = "End session", icon = 
"pkg.svg", node_label = "End session {{sessionName}}|")
public class EndSession {
    @Sessions
    private Map<String, Object> sessions;
    @Execute
    public void end(
            @Idx(index = "1", type = TEXT) @Pkg(label = "Session name", default_value_type = STRING, 
            default_value = "Default") @NotEmpty String sessionName) {
                 
        sessions.remove(sessionName);   
    }  
    public void setSessions(Map<String, Object> sessions) {
        this.sessions = sessions;
    }
}

Añadir una sesión

En el siguiente ejemplo, se utilizan objetos de cadena (aunque en las acciones reales, se pueden utilizar objetos complejos).

@BotCommand
@CommandPkg(label = "[[SessionDemo.label]]", description = "[[SessionDemo.description]]", icon = "sample.svg", name = "sessionDemo")
public class SessionDemo {

	// Sessions are provided as a Map. Actions can add or remove entries in this
	// Map.
	// The choice to reuse/overwrite/delete/add any Object in this Map belongs to
	// the actions, and the framework makes no assumption regarding it.
	@Sessions
	private Map<String, Object> sessionMap;

	@Execute
	public void execute(@Idx(index = "1", type = TEXT)
	@Pkg(label = "[[SessionDemo.name.label]]")
	@NotEmpty
	String name) {
		if (!sessionMap.containsKey(name))
			sessionMap.put(name, "Some Value");
	}

	// Ensure that a public setter exists.
	public void setSessionMap(Map<String, Object> sessionMap) {
		this.sessionMap = sessionMap;
	}
}

Establecer una variable de sesión

El siguiente ejemplo muestra cómo desarrollar una acción (por ejemplo, Establecer variable de sesión). En la acción, los detalles de la sesión se recuperan y se almacenan como una variable de sesión para que la información pueda ser utilizada dentro de un paquete específico.

@BotCommand
@CommandPkg(label = "[[SessionDemo2.label]]", description = "[[SessionDemo2.description]]", icon = "sample.svg", name = "SessionDemo2",
return_type = DataType.STRING)
public class SessionDemo2 {

	// Sessions are provided as a Map. Actions can add or remove entries in this
	// Map.
	// The choice to reuse/overwrite/delete/add any Object in this Map belongs to
	// the actions, and the framework makes no assumption regarding it.
	@Sessions
	private Map<String, Object> sessionMap;

	@Execute
	public Value<?> execute(@Idx(index = "1", type = TEXT)
	@Pkg(label = "[[SessionDemo2.name.label]]")
	@NotEmpty
	String name) {
		if (sessionMap.containsKey(name)) {
			return new StringValue(sessionMap.get(name));
		}	
		return new StringValue("session does not exist");
	}
	// Ensure that a public setter exists.
	public void setSessionMap(Map<String, Object> sessionMap) {
		this.sessionMap = sessionMap;
	}
}
Enviar comentarios