ScriptableDataStream - Champ d’application, global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 6 minutes de lecture
  • L’API ScriptableDataStream fournit des méthodes permettant d’interagir avec un flux de données.

    Cette classe ne peut être utilisée que dans un script côté serveur après avoir récupéré un objet ScriptableDataStream à l’aide de l’une de ces API :

    • La méthode executeDataStreamAction() dans la classe FlowAPI . Consultez FlowAPI.
    • La méthode getDataStream() dans la classe ScriptableFlowRunnerResult . Voir ScriptableFlowRunnerResult.

    Après avoir récupéré un objet ScriptableDataStream, appelez les méthodes dans cet ordre spécifique :

    1. Utilisez la méthode hasNext() pour déterminer s’il existe d’autres éléments dans le flux de données.
    2. Utilisez la méthode next() pour accéder à l’élément suivant dans le flux.
    3. Utilisez les méthodes getItemIndex(),getItemInPageIndex() et getPageIndex() pour obtenir des informations à partir du flux.
    4. Utilisez la méthode close() pour fermer le flux.

    Cette classe s’exécute dans l’espace de noms sn_fd .

    Remarque :
    Enveloppez toujours la logique de flux de données dans un bloc try/catch pour intercepter les erreurs. Incluez toujours une instruction finally qui se termine par la méthode close() de la classe ScriptableDataStream pour fermer le flux de données et éviter les problèmes de performances.

    ScriptableDataStream : close()

    Ferme la connexion à un flux de données. Appelez toujours cette méthode après avoir effectué les opérations souhaitées sur un flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Tableau 1. Paramètres
    Nom Type Description
    Aucun
    Tableau 2. Renvoie
    Type Description
    nul
    (function() {
    	
    	try {
    ​
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_snc_my_scope.data_stream_name');
    ​
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    ​
    			// Get a single item from the data stream.
    			var user = stream.next();
    		
    			// Only log the first item in each page
    			if (stream.getItemInPageIndex() == 0) {
    				gs.info('first user on page is ' + user.name);
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();

    ScriptableDataStream : getItemIndex()

    Renvoie l’index actuel d’un élément dans un flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Tableau 3. Paramètres
    Nom Type Description
    Aucun
    Tableau 4. Renvoie
    Type Description
    Numéro Index actuel d’un élément dans un flux de données à l’aide de l’indexation de base zéro.
    (function() {
    	
    	try {
    
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    
    			// Get a single item from the data stream.
    			var User = stream.next();
    
    			// Use the item. Example:
    			// var now_GR = new GlideRecord(<table_name>);
    			// now_GR.<field_name> = User.<field_name>;
    			// now_GR.insert();
    		
    			// By default, this code snippet will terminate after 10 items.
    			// Remove or modify this limit after your code has been tested.
    			if (stream.getItemIndex() >= 9) {
    				break;
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();

    ScriptableDataStream : getItemInPageIndex()

    Renvoie l’index actuel d’un élément de la page actuelle d’un flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Tableau 5. Paramètres
    Nom Type Description
    Aucun
    Tableau 6. Renvoie
    Type Description
    Numéro Index actuel d’un élément de la page actuelle dans le flux de données à l’aide de l’indexation de base zéro.
    (function() {
    	
    	try {
    ​
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_snc_my_scope.data_stream_name');
    ​
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    ​
    			// Get a single item from the data stream.
    			var user = stream.next();
    		
    			// Only log the first item in each page
    			if (stream.getItemInPageIndex() == 0) {
    				gs.info('first user on page is ' + user.name);
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();

    ScriptableDataStream : getPageIndex()

    Renvoie l’index actuel d’une page dans un flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Tableau 7. Paramètres
    Nom Type Description
    Aucun
    Tableau 8. Renvoie
    Type Description
    Numéro Index actuel d’une page dans un flux de données utilisant l’indexation de base zéro.
    (function() {
    	
    	try {
    
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    
    			// Get a single item from the data stream.
    			var item = stream.next();
    
    			// Use the item. 
    			var now_GR = new GlideRecord('incident');
    			now_GR.setValue('number',item.id);
    			now_GR.setValue('short_description',item.name);
    			now_GR.insert();
    		
    			// By default, this code snippet will terminate after 5 pages.
    			// Remove or modify this limit after testing your code.
    			if (stream.getPageIndex() >= 4) {
    				break;
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();

    ScriptableDataStream : hasNext()

    Renvoie la valeur true s’il y a plus d’éléments dans le flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Remarque :
    Par défaut, l’instance attend pendant 600 secondes avant de récupérer une seule page de données d’un Serveur MIDfichier . Si vous rencontrez un délai d’expiration lors de l’exécution d’une Flux de données action via un Serveur MID, modifiez cette valeur par défaut en augmentant la valeur de la datastream_alternative_env_fetch_page_timeout_seconds propriété système.
    Tableau 9. Paramètres
    Nom Type Description
    Aucun
    Tableau 10. Renvoie
    Type Description
    Booléen Marqueur qui détermine s’il existe d’autres éléments dans le flux de données. Les valeurs comprennent :
    • true : il existe d’autres éléments à itérer dans le flux de données.
    • false : il n’y a plus d’éléments dans le flux de données.

    Cet exemple crée un enregistrement d’incident pour chaque élément renvoyé dans le flux de données.

    (function() {
    	
    	try {
    
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    
    			// Get a single item from the data stream.
    			var item = stream.next();
    
    			// Use the item. 
    			var now_GR = new GlideRecord('incident');
    			now_GR.setValue('number',item.id);
    			now_GR.setValue('short_description',item.name);
    			now_GR.insert();
    		
    			// By default, this code snippet will terminate after 10 items.
    			// Remove or modify this limit after testing your code.
    			if (stream.getItemIndex() >= 9) {
    				break;
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();

    ScriptableDataStream - next()

    Renvoie l’élément suivant dans un flux de données.

    Vous pouvez uniquement appeler cette méthode sur un objet ScriptableDataStream renvoyé par la méthode executeDataStreamAction() dans la classe FlowAPI. Consultez FlowAPI.

    Remarque :
    Par défaut, l’instance attend pendant 600 secondes avant de récupérer une seule page de données d’un Serveur MIDfichier . Si vous rencontrez un délai d’expiration lors de l’exécution d’une Flux de données action via un Serveur MID, modifiez cette valeur par défaut en augmentant la valeur de la datastream_alternative_env_fetch_page_timeout_seconds propriété système.
    Tableau 11. Paramètres
    Nom Type Description
    Aucun
    Tableau 12. Renvoie
    Type Description
    Objet L’élément suivant dans le flux de données. Cet objet contient les sorties définies par l’action Flux de données. Pour afficher les sorties de l’action Flux de données, accédez à la section Sorties de l’action Flux de données dans l’interface du Concepteur de flux.

    Cet exemple crée un enregistrement d’incident pour chaque élément renvoyé dans le flux de données.

    (function() {
    	
    	try {
    
    		// Execute Data Stream Action. 
    		var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
    		// Process each item in the data stream
    		while (stream.hasNext()) {
    
    			// Get a single item from the data stream.
    			var item = stream.next();
    
    			// Use the item. 
    			var now_GR = new GlideRecord('incident');
    			now_GR.setValue('number',item.id);
    			now_GR.setValue('short_description',item.name);
    			now_GR.insert();
    		
    			// By default, this code snippet will terminate after 10 items.
    			// Remove or modify this limit after testing your code.
    			if (stream.getItemIndex() >= 9) {
    				break;
    			}
    		}		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	} finally {
    		stream.close();
    	}
    	
    })();