---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# ScriptableDataStream - com escopo, global

# ScriptableDataStream - com escopo, global {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 6 min. de leitura

A API ScriptableDataStream fornece métodos para interagir com um fluxo de dados.

Esta classe só pode ser usada em um script do lado do servidor após a recuperação de um objeto ScriptableDataStream usando uma destas APIs:  
* O método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").
* O método getDataStream() na classe ScriptableFlowRunnerResult. Consulte [ScriptableFlowRunnerResult](https://servicenow-prod.fluidtopics.net/tMjfpCH6IQYlkoApwBuaxw#ScriptableFlowRunnerResultScopedAPI "Captura o resultado do uso de ScriptableFlowRunner para executar um fluxo, subfluxo ou ação. Inclui dados como ID de contexto, domínio e quaisquer saídas da execução do fluxo.").
{#ScriptableDataStreamAPI__ul_wnh_sfv_ylb}

Depois de recuperar um objeto ScriptableDataStream, chame os métodos nesta ordem específica:  
1. Use o método [hasNext()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-hasNext "Retorna verdadeiro se houver mais itens no fluxo de dados.") para determinar se há mais itens no fluxo de dados.
2. Use o método [next()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-next "Retorna o próximo item em um fluxo de dados.") para acessar o próximo item no fluxo.
3. Use os [métodos getItemIndex()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-getItemIndex "Retorna o índice atual de um item em um fluxo de dados."), [getItemInPageIndex()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-getItemInPageIndex "Retorna o índice atual de um item na página atual em um fluxo de dados.")e [getPageIndex()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-getPageIndex "Retorna o índice atual de uma página em um fluxo de dados.") para obter informações do fluxo.
4. Use o método [close()](https://servicenow-prod.fluidtopics.net/Bu2ztVY6IGuA6jJD4CJ22Q#ScriptableDS-close "Encerra a conexão com um fluxo de dados. Sempre chame este método depois de executar qualquer operação desejada em um fluxo de dados.") para fechar o fluxo.
{#ScriptableDataStreamAPI__ol_k1k_yp1_3jb}

Esta classe é executada no namespace `sn_fd`.  
Nota:  
Sempre encapsule a lógica de fluxo de dados em um bloco `tentar/capturar` para detectar erros. Sempre inclua uma declaração `final` que termina com o método close() da classe ScriptableDataStream para fechar o fluxo de dados e evitar problemas de desempenho.

## ScriptableDataStream - fechar () {#ariaid-title2}

Encerra a conexão com um fluxo de dados. Sempre chame este método depois de executar qualquer operação desejada em um fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").
{#ScriptableDS-close__table_idv_glc_cjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 1. Parâmetros]

{#ScriptableDS-close__table_idv_glc_cjb} {#ScriptableDS-close__table_jdv_glc_cjb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 2. Retorna]

{#ScriptableDS-close__table_jdv_glc_cjb}  

    (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() {#ariaid-title3}

Retorna o índice atual de um item em um fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").
{#ScriptableDS-getItemIndex__table_ic4_flc_cjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 3. Parâmetros]

{#ScriptableDS-getItemIndex__table_ic4_flc_cjb} {#ScriptableDS-getItemIndex__table_jc4_flc_cjb__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Índice atual de um item em um fluxo de dados usando indexação baseada em zero. |
[Tabela 4. Retorna]

{#ScriptableDS-getItemIndex__table_jc4_flc_cjb}  

    (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() {#ariaid-title4}

Retorna o índice atual de um item na página atual em um fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").
{#ScriptableDS-getItemInPageIndex__table_mg4_zkc_cjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 5. Parâmetros]

{#ScriptableDS-getItemInPageIndex__table_mg4_zkc_cjb} {#ScriptableDS-getItemInPageIndex__table_ng4_zkc_cjb__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Índice atual de um item na página atual no fluxo de dados usando indexação baseada em zero. |
[Tabela 6. Retorna]

{#ScriptableDS-getItemInPageIndex__table_ng4_zkc_cjb}  

    (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() {#ariaid-title5}

Retorna o índice atual de uma página em um fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").
{#ScriptableDS-getPageIndex__table_l3t_g43_bjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 7. Parâmetros]

{#ScriptableDS-getPageIndex__table_l3t_g43_bjb} {#ScriptableDS-getPageIndex__table_m3t_g43_bjb__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Índice atual de uma página em um fluxo de dados usando indexação baseada em zero. |
[Tabela 8. Retorna]

{#ScriptableDS-getPageIndex__table_m3t_g43_bjb}  

    (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() {#ariaid-title6}

Retorna verdadeiro se houver mais itens no fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").  
Nota:  
Por padrão, a instância espera 600 segundos para recuperar uma única página de dados de um MID Server. Se você encontrar um tempo limite ao executar uma ação Fluxo de dados por meio de um MID Server, altere esse padrão aumentando a propriedade do sistema datastream_alternative_env_fetch_page_timeout_seconds.
{#ScriptableDS-hasNext__table_fcx_d43_bjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 9. Parâmetros]

{#ScriptableDS-hasNext__table_fcx_d43_bjb} {#ScriptableDS-hasNext__table_gcx_d43_bjb__entry__2}

| Tipo | Descrição |
|-|-|
| Booliano | Sinalizador que determina se há mais itens no fluxo de dados. Os valores incluem: * verdadeiro: há mais itens para iterar no fluxo de dados. * falso: não há mais itens no fluxo de dados. {#ScriptableDS-hasNext__ul_xy5_z4d_cjb} |
[Tabela 10. Retorna]

{#ScriptableDS-hasNext__table_gcx_d43_bjb}  
Este exemplo cria um registro de incidente para cada item retornado no fluxo de dados.

    (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() {#ariaid-title7}

Retorna o próximo item em um fluxo de dados.
Você só pode chamar este método em um objeto ScriptableDataStream retornado do método executeDataStreamAction() na classe FlowAPI. Consulte [FlowAPI](https://servicenow-prod.fluidtopics.net/goMTaG6ZJ5WfQv~SfF9SxA#ScriptableFlowAPI "A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não bloqueio.").  
Nota:  
Por padrão, a instância espera 600 segundos para recuperar uma única página de dados de um MID Server. Se você encontrar um tempo limite ao executar uma ação Fluxo de dados por meio de um MID Server, altere esse padrão aumentando a propriedade do sistema datastream_alternative_env_fetch_page_timeout_seconds.
{#ScriptableDS-next__table_lrc_f43_bjb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 11. Parâmetros]

{#ScriptableDS-next__table_lrc_f43_bjb} {#ScriptableDS-next__table_mrc_f43_bjb__entry__2}

| Tipo | Descrição |
|-|-|
| Objeto | O próximo item no fluxo de dados. Este objeto contém as saídas definidas pela ação de fluxo de dados. Para exibir as saídas da ação de fluxo de dados, navegue até a seção Saídas da ação de fluxo de dados na interface do Flow Designer. |
[Tabela 12. Retorna]

{#ScriptableDS-next__table_mrc_f43_bjb}  
Este exemplo cria um registro de incidente para cada item retornado no fluxo de dados.

    (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();
    	}
    	
    })();


