Configurer les attributs de session partagée à l'aide du package SDK

Package SDK fournit une configuration permettant aux utilisateurs du SDK de créer et d'utiliser des sessions partagées. Les sessions sont partagées simplement entre différents robots afin de partager les ressources entre eux. Ce qui signifie que si une session a été créée, l'autre Robots de tâches peut lire et mettre à jour la session et vice versa.

Partage de session entre le parent et l'enfant

La section suivante décrit la création d'une session partagée. Le parent GlobalSessionDemoUpperCaseParent retourne une valeur de session à la session globale et est utilisée par le bot enfant GlobalSessionDemoUpperCaseChild.
Remarque : Placez les trois classes ci-dessous à l'emplacement suivant : <PackageSDK>\src\main\java\com\automationanywhere\botcommand\samples\commands\basic
  1. Créez la classe suivante POJO DemoForSession qui implémente 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. Ajoutez l'annotation @BotCommand pour créer une classe en tant qu'action dans la Control Room. Pour plus d'informations sur les annotations, voir Annotations.
    @BotCommand
  3. Ajoutez l'annotation @CommandPkg afin de définir tous les composants liés à l'interface utilisateur : étiquettes, description , icône, return_type et nom. Les éléments return_label, return_settings, return_type et return_required appartenant à @CommandPkg garantissent que la SESSION est renvoyée par le robot parent.
    @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. Créez l'objet GlobalSessionDemoUpperCaseParent. GlobalSessionDemoUpperCaseParent reçoit une chaîne de caractères en minuscules de l'entrée de l'action, la convertit en une chaîne de caractères en majuscules et stocke le résultat dans SessionValue.

    • Annotez la méthode avec @Execute pour exécuter la méthode lors de la compilation.

      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. Créez l'objet GlobalSessionDemoUpperCaseChild. GlobalSessionDemoUpperCaseChild reçoit une chaîne de caractères en minuscules de l'entrée de l'action, la convertit en majuscules et la concatène avec SessionValue reçue du robot parent.

    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. Construisez et chargez le package personnalisé dans la Control Room. Pour plus d'informations sur le chargement de package, voir Utilisation du package SDK.
  7. Créez un robot en utilisant l'action Global session uppercase parent.
    1. Entrez une chaîne de caractères en minuscules (par exemple : chaîne parentbot)
    2. Saisissez un nom pour la session. Le bot parent retourne la valeur à la session globale (par exemple : Global)
  8. Créez un Robots de tâches en utilisant l'action Global session upper case child. Vous pourrez saisir une chaîne de caractères en minuscules et obtenir également la chaîne de caractères de la session parent partagée. Concaténez les chaînes de caractères parent et enfant.
  9. Utilisez une zone de message pour afficher le résultat.

    L'image montre la démonstration de variable SDK

  10. Maintenant, appelez Global session upper case child dans le parent. L'image montre la démonstration de variable SDK
  11. Exécutez le robot parent et vous verrez la zone de message indiquant la valeur du robot enfant qu'il a modifié en utilisant la session globale partagée.