ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt u: -
Remote imports en exports van en naar Exact Globe uitvoeren via ASImport.exe Remote de resultaten van de bovenstaande im- en exports controleren Remote voorgedefinieerde stored procedures uitvoeren (Ad hoc queries worden uit beveiligings overwegingen niet ondersteund) Remote voorgedefinieerde Crystal Reports rapporen uitvoeren, waarbij het rapport als PDF wordt geretourneerd.
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 1
Installatie Om de AsRemote WebService te kunnen draaien moeten: -
Internet information Services draaien .Net Runtime 3.5 SP1 (inclusief alle patches van de Windows Update) geinstalleerd zijn Een Exact Globe werkstion installatie moet operationeel zijn op dezelfde machine Voor Crystal reports functionaliteit: Crystal Reports Basic for Visual Studio .NET 2008 Runtime (http://resources.businessobjects.com/support/additional_downloads/runtime.asp#09)
De Exact Globe database hoeft niet op dezelfde machine te draaien. 1. Plaats de geleverde bestanden in een map op de server, en maak in IIS een website aan die verwijst naar deze locatie. 2. Stel de applicatie pool van de website in zodat deze draait onder een gebruiker met voldoende rechten in Exact Globe (XML import / Export functies) en op de database (Execute rechten op de te gebruiken stored procedures en op de tabellen die aangesproken worden door de eventueel gebruikte Crystal Reports). Het is aangeraden om een specifieke ASRemote user aan te maken voor het gebruik met deze webservice, zodat u de rechten van deze gebruiker kunt beperken (beveiliging) en een overzicht heeft van de acties die via deze service zijn uitgevoerd (overzicht). 3. Zet bij de applicatie pool de advanced optie “Load User profile” op True. 4. Zorg ervoor dat de ASRemote Webservice 32 bits loopt: IIS 6: run het script %systemdrive%\Inetpub\AdminScripts\cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 “true” IIS 7: Enable 32 bits applications = True bij Advanced application pool settings
Crystal reports Rapporten via de AS Remote WebService De crystal reports rapporten die gebruikt worden via de ASRemote webservices moeten aan de volgende voorwaarden voldoen: -
Sub-rapporten worden niet ondersteund. De rapporten moeten OLE DB (ADO) met als provider “Microsoft OLE DB Provider for SQL Server” als datasource hebben. Crystal reports versie 10.5 wordt gebruikt in de ASRemote webservices, dus functies van hogere versies zullen niet werken. Elk rapport zal op elke Exact database werken; er is dus géén noodzaak om een rapport per database te definieren.
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 2
Configuratie Web.Config settings Syntax:
<setting name="PathToAsImport" serializeAs="String"> c:\Program Files (x86)\Exact Software\BIN\AsImport.exe <setting name="ExactServerIp" serializeAs="String"> 127.0.0.1 <setting name="AllowedSourceIps" serializeAs="String"> 127.0.0.1,::1 <setting name="ReportPath" serializeAs="String"> C:\Reports <setting name="Server" serializeAs="String"> 127.0.0.1
Velden: PathToAsImport: Het fysieke pad naar de Exact Globe ASImport executable ExactServerIP:Het IP nummer (of naam) van de database server waar Exact Globe op draait. AllowedSourceIps:De Ip nummers waarvan toegang tot de webservice wordt toegestaan, gescheiden door komma’s ReportPath:Het fysieke pad naar de Crystal reports die gestart kunnen worden met de functie PrintReport Server: Het IP nummer (of naam) van de database server waar Exact Globe op draait
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 3
Beschikbare Functies Import Syntax VB: Import(database As String, topic As String, parameters As String, xml As String, exportToExact As Boolean) As String
Syntax C#: string Import(string database, string topic, string parameters, string xml, bool exportToExact);
Beschrijving: Stuurt het Exact onderdeel ASImport.exe aan om een XML in Exact Globe te importeren of een XML uit Exact Globe te exporteren. Parameters: Database: De Exact database waar de gegevens naar toe (of uit) geexporteerd moeten worden Topic: Het ASImport Topic (zie documentatie Exact ASImport) Parameters: De extra parameters voor het topic (bv –OPT20 voor free fields en pictures by het topic Items) xml: De XML die naar Exact Globe ge-exporteerd moet worden exportToExact:True om naar Exact Globe te schrijven, False om uit Exact Globe te lezen ReturnValue: De XML (bij Export naar Exact Globe: de XML zoals aangeboden, bij import uit Exact Globe de XML die uit Exact Globe is gelezen) Opmerkingen: De mogelijke topics met de bijbehorende mogelijke parameters kunt u opzoeken in het volgende Exact document: http://www.exactsoftware.com/docs/DocView.aspx?DocumentID={ce1c5d5a-14c4-4f6c-beba9be24e3d46a3} De Xml die meegegeven wordt bij export naar Exact, wordt gelezen en verwerkt aan de hand van de encoding tag in de XML. Wanneer deze tag ontbreekt wordt ASCII encoding aangenomen. De ondersteunde encodings zijn:
UTF-8 UTF-16 (deze wordt ook wel gewoon UNICODE genoemd, maar in XML is dit altijd UTF-16) UTF-32
De kop van de XML ziet er normaal gesproken alsvolgt uit (waarbij de encoding natuurlijk de juiste moet zijn voor uw document): <eExact xsi:noNamespaceSchemaLocation="eExact-Schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Voorbeeld: 'Importeer alle debiteuren die gewijzigd zijn op of na 1 januari 2011 uit Exact db 001 Xml = Import("001", "Debtors", "-EXTSysModifiedFrom=2011-01-01", "", False) 'Exporteer de debiteuren in de XML naar Exact db 001 Import("001", "Debtors", "", Xml, True)
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 4
GetImportResults Syntax VB: GetImportResults(Db As String, Topic As String, Topicnode As String, OrigValue As ASImportResult) As ASImportResult
Syntax C#: ASImportResult GetImportResults(string Db, string Topic, string Topicnode, ASImportResult OrigValue);
Beschrijving: Leest de XML Resultaten voor de laatste gemaakte import uit de tabel XMLEvents. Parameters: Db: De Exact database waar de gegevens naar toe zijn ge-exporteerd Topic: Het ASImport Topic (zie documentatie Exact ASImport) TopicNode: De ASImport Topic node(deze kunt u nazoeken in de Exact tabel XMLEvents) OrigValue:Een instantie van de class AsImportResult. De informatie die al in deze class staat wordt uitgebreid met de resultaten van de XML import ReturnValue: Een nieuwe instantie van AsImportResult met hierin de import resultaten. Opmerkingen: De betrouwbaarheid van deze functie is niet 100% doordat er geen unieke match bestaat in de Exact Globe database voor het uitlezen van de import resultaten. Deze functie leest de laatste import resultaten voor het gespecificeerde Topic / TopicNode combinatie, die zijn gemaakt door de gebruiker waarop de webservice loopt. Indien er tegelijkertijd meerdere imports van hetzelfde type worden geinitieerd via de webservice (of door een fysieke gebruiker die dezelfde inloggegevens gebruikt) is het mogelijk dat de resultaten van een andere import teruggeven worden. Om de kans op verkeerde resultaten te verkleinen is het zaak deze functie zo snel mogelijk na het uitvoeren van de import aan te roepen.
Voorbeeld: 'Haal de laatste resultaten van de debiteuren export naar Exact op Results = GetImportResults("001", "Debtors", "Debtor", New ASImportResult)
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 5
Exec Syntax VB: Exec(database As String, storedProcedure As String, ParamArray params() As Object) As Integer
Syntax C#: int Exec(string database, string storedProcedure, params object[] @params)
Beschrijving: Voert een vooraf gedefinieerde stored procedure uit op een Exact Globe Database. Er wordt geen resultset teruggegeven. Parameters: Database: De Exact database waarop de stored procedure uitgevoerd moet worden. storedProcedure: De naam van de stored procedure die uitgevoerd moet worden Params: Een array met parameters voor de stored procedure, in de volgorde zoals de stored procedure deze verwacht. ReturnValue: Het aantal affected rows.
Voorbeeld: 'Voer een stored procedure uit in de Exact database 001 Dim Parameter1 As String = "123" Dim Parameter2 As Integer = 1 Dim Parameter3 As Double = 2.3 RowsAffected = Exec("001", "My_Stored_Procedure", Parameter1, Parameter2, Parameter3)
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 6
Query Syntax VB: Query(database As String, storedProcedure As String, ParamArray params() As Object) As String
Syntax C#: string Query(string database, string storedProcedure, params object[] @params)
Beschrijving: Voert een vooraf gedefinieerde stored procedure uit op een Exact Globe Database, waarbij een resultset (dataTable) wordt teruggegeven als XMLStream. Parameters: Database: De Exact database waarop de stored procedure uitgevoerd moet worden. storedProcedure: De naam van de stored procedure die uitgevoerd moet worden Params: Een array met parameters voor de stored procedure, in de volgorde zoals de stored procedure deze verwacht. ReturnValue: Een XML serialized DataTable. Opmerking: De teruggegeven XML Stream kan weer omgezet worden in een dataTable met de volgende code: VB: Dim DataSet As New DataSet Dim Stream As System.IO.StringReader Stream = New System.IO.StringReader(AsRemote.Query(database, storedProcedure, params)) DataSet.ReadXml(Stream) If DataSet.Tables.Count = 0 Then Return New DataTable Else Return DataSet.Tables(0) End If
C#: DataSet DataSet = new DataSet(); System.IO.StringReader Stream = null; Stream = new System.IO.StringReader(AsRemote.Query(database, storedProcedure, @params)); DataSet.ReadXml(Stream); if (DataSet.Tables.Count == 0) { return new DataTable(); } else { return DataSet.Tables[0]; }
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 7
PrintReport Syntax VB: PrintReport(database As Object, reportName As String, parameters As Generic.List(Of ReportParameter)) As Byte()
Syntax C#: byte[] PrintReport(object database, string reportName, System.Collections.Generic.List
parameters)
Beschrijving: Drukt een Crystal Report uit op een Exact Database, en geeft een PDF in een byte array terug als resultaat. Parameters: Database: De Exact database waarop het rapport uitgevoerd moet worden. reportname: De bestandsnaam van het report Params: Een generic list met parameters voor het report ReturnValue: Een PDF in een byte array
Voorbeeld: 'Haal een crystal reports rapport op vanaf de Exact server en run deze op database 001 PdfByteArray = PrintReport("001", "MyCrystalReport.rpt", ReportParams)
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 8
Beschikbare Types ASImportResult Syntax VB: Class ASImportResult Public Accepted As Integer = 0 Public Invalid As Integer = 0 Public ExportFromExactOk As Boolean = False Public errorString As String = "" Public InfoString As String = "" Public Xml As String = "" Public AsImportCall As String = "" End Class
Syntax C#: class ASImportResult { public int Accepted = 0; public int Invalid = 0; public bool ExportFromExactOk = false; public string errorString = ""; public string InfoString = ""; public string Xml = ""; public string AsImportCall = ""; }
Velden: Accepted: Het aantal accepted items Invalid: Het aantal niet acepted items ExportFromExactOk: True indien de acties is gelukt (niet gebruikt bij ASRemote) ErrorString: De Errors zoals gemeld door de XML import InfoString: Extra informatie (indien beschikbaar) over de gedaneXML import Xml: De geimporteerde of geexporteerde XML AsImportCall:De aanroep waarmee ASImport was gestart. (niet gebruikt bij ASRemote)
ReportParameter Syntax VB: Public Class ReportParameter Public Name As String Public Value As String End Class
Syntax C#: class ReportParameter { public string Name; public string Value; }
Velden: Name: De parameter name in het report Value: De waarde voor deze parameter
ASRemote WebService [Copyright 2011 The Tool Factory BV]
Page 9