Métodos de Batch
El uso de encabezados SOAP en Reporting Services le permite incluir varios métodos de servicio web en una única operación. Los métodos se ejecutan dentro del ámbito de una transacción de base de datos única, en el orden en que se llama.
La reversión es una ventaja de la utilización de operaciones por lotes con varios métodos. Si se produce un error en cualquier llamada de método mientras se ejecuta un lote, el servidor de informes deja de ejecutar el lote y revierte las operaciones anteriores. Esta acción es útil cuando una llamada al método depende de la finalización correcta de otras llamadas de método en ese lote.
El servicio web no proporciona semántica de bloqueo para operaciones por lotes de varios métodos. Las filas de la base de datos del servidor de informes no se bloquean para actualizarse hasta que el mensaje se envía al servidor y se llama al Execute
comando .
No existen controles de simultaneidad para garantizar que nadie haya cambiado la base de datos desde la última lectura de los datos. Si dos clientes modifican el mismo elemento, la última actualización se realiza correctamente si los parámetros siguen siendo válidos (por ejemplo, el nombre del elemento es el mismo).
El ejemplo siguiente llama al método CreateFolder tres veces y ejecuta estas llamadas como un único lote. Si cualquiera de las llamadas a CreateFolder no puede realizarse, se cancela el lote completo.
Imports System
Imports System.Web.Services.Protocols
Imports myNamespace.MyReferenceName
Class Sample
Sub Main(args() As String)
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"
Dim bh As New BatchHeader()
bh.BatchId = service.CreateBatch()
rs.BatchHeaderValue = bh
rs.CreateFolder("New Folder1", "/", Nothing)
rs.CreateFolder("New Folder2", "/", Nothing)
rs.CreateFolder("New Folder3", "/", Nothing)
Console.WriteLine("Creating folders...")
rs.BatchHeaderValue = bh
rs.ExecuteBatch()
Console.WriteLine("Folders created successfully.")
rs.BatchHeaderValue = Nothing
End Sub
End Class
using System;
using System.Web.Services.Protocols;
using myNamespace.MyReferenceName;
class Sample
{
static void Main(string[] args)
{
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"
BatchHeader bh = new BatchHeader();
bh1.BatchID = service.CreateBatch();
rs.BatchHeaderValue = bh;
rs.CreateFolder("New Folder1", "/", null);
rs.CreateFolder("New Folder2", "/", null);
rs.CreateFolder("New Folder3", "/", null);
Console.WriteLine("Creating folders...");
rs.BatchHeaderValue = bh1;
rs.ExecuteBatch();
Console.WriteLine("Folders created successfully.");
rs.BatchHeaderValue = null;
}
}