Jump to content
  • 0

Server side scripting (on)mogelijkheden


rmw

Question

Posted

Wat ik wil:

Een server side script dat gegevens uit een database op een andere FM server importeert en in die andere database ook weer gegevens terug plaatst.

De volgorde van die twee acties is niet het belangrijkste. Eerst aanpassen en dan importeren of andersom, mag wat mij betreft allebei.

 

Wat ik heb:

Omdat FM zelf in een server side script niet kan praten met databases op een andere FM server heb ik een import via ODBC voor elkaar.

Dan mag je wel databronnen gebruiken die niet op de server zelf staan.

 

Wat niet lukt:

Helaas is de scriptstap ExecuteSQL niet server side compatible, dus het wijzigen van gegevens in de andere database via een UPDATE statement kan niet.

Het UPDATE statement krijg ik ook niet opgenomen in de SQL die ik voor de import mag opgeven. Misschien dat ik gewoon te weinig SQL ken of dat het echt niet kan.

 

Wat ik vraag:

Is er op een of andere manier via een server side script een mogelijkheid om gegevens in een database op een andere server aan te passen?

 

Enkele gedachten hierover:

Ik heb horen verluiden dat je via XML/http requests scripts kan uitvoeren op een andere server, zelfs met parameters, maar ik heb daar hoegenaamd geen ervaring mee.

Als dat mogelijk is dan zou er weer hoop gloren.

 

Of misschien bestaat er een plug-in die ook op de server werkt en die wel een SQL UPDATE statement kan uitvoeren met verwijzing naar een externe databron.

De DoSQL plugin van MyFMButler kan volgens mij alleen op de database zelf werken.

 

Ik hoor graag of er mogelijkheden zijn.

 

rmw

14 answers to this question

Recommended Posts

  • 0
Posted

Hoi,

 

Je kunt wellicht XML bestanden klaar zetten op een webserver ? Je kunt bij een XML import een HTTP request opgeven ? Beide servers zouden dat kunnen doen ?

 

Je kunt ook een webservice van je FileMaker Server maken ?

http://360works.com/web-services-manager/

 

 

Je kunt een script sequense maken in server 11. Je kunt dan eerst een systeem script draaien vervolgens een filemaker script en dan weer een systeem script ?

Je zou dus wellicht bestandjes kunnen ftp-en en importeren ?

 

Je kunt ook via de PHP api een filemaker script triggeren ? Dan zou je dus een verzoek kunnen indienen om een XML klaar te zetten die je vervolgens met een HTTP request importeert.

 

 

Nou misschien heb je hier wat aan ?

 

Groet,

 

WJ

  • 0
Posted

Je server side script kan niet op remote FileMaker tabellen inloggen, alleen maar op FileMaker tabellen die op je server zélf staan.

DoSQL kan op externe tabellen werken, en server side, maar de mini "server-client" engine kan er niet aan.

 

Uiteindelijk kan je wel iets voor mekaar krijgen, WJ heeft daar een leuk voorstel, maar ik vraag me af of je dit niet beter op een client afhandelt, desnoods op de server zelf.

  • 0
Posted
ik vraag me af of je dit niet beter op een client afhandelt, desnoods op de server zelf.

 

Dat lijkt me inderdaad het meest praktisch. Soms moet je het niet te moeilijk maken ...

  • 0
Posted

Dank voor het meedenken.

 

Het is op dit moment ook een client die het proces afhandelt.

Het probleem met de client is echter dat ik die zelf elke keer een schop moet geven om zijn ding te doen.

Ik had gehoopt van het mechanisme van de server gebruik te kunnen maken om met regelmaat een actie uit te kunnen voeren.

 

Nog wat achtergrond info:

Om te voorkomen dat client blijft hangen op het dialoog venster dat de verbinding met de host is onderbroken, wordt die na elke actie afgesloten.

Als je een filemaker verbinding naar een extern bestand opent en die verbinding wordt verbroken, dan krijg je een dialoog die dat meld en die alleen via een gebruiker actie kan worden weggeklikt.

Door nu via ODBC te importeren heb ik al veel meer grip op de controle van de aanwezigheid van de verbinding, dus misschien kan hij nu wel blijven draaien...

 

We puzzelen verder.

 

Blijft nog wel de vraag: kan je via XML oid een script op een andere server starten, inclusief parameters?

 

rmw

  • 0
Posted

Ik heb voor een dergelijk situatie gebruik gemakt van (standaard) email berichten die door scripts in elkaar worden gezet, verstuurt

en vervolgens op de andere server weer worden opgepakt, en uit elkaar getrokken en verwerkt.

Deze scripts staan gewoon in een schedule en het werkt perfect. (de time-out door wegvallen verbindingen etc. wordt door de FMS secheduler afgehandeld)

 

Dit is natuurlijk alleen mogelijk als de hoeveelheid data die bewerkt moet worden niet al te groot is, en dat de data niet realtime op de andere server moet verschijnen.

De minimale interval van een schedule is 1 minuut dus je bericht is (indien email niet vertraagd) in maximaal 3 minuten aan de andere kant opgepakt.

 

cor

  • 0
Posted

he rmw

 

lees de documentatie eens na over xml en xslt publishing, er zal een wereld opengaan. http://www.filemaker.com/support/product/docs/fms/fms11_cwp_xslt_en.pdf

 

heb zelf pas de kracht hiervan ontdekt, maar ik gebruik deze techniek nu zo vaak.

 

- bepaalde data offline hebben, klant heeft internetconnectie en je pusht data naar de server.

- jaarrapport aanmaken. Vroeger deed ik dit client side, nu laat ik het de server (getriggered door de client) doen, en die laat nadien aan de client weten dat het rapport klaar is.

- en jouw vraag moet helemaal mogelijk zijn. je triggered een script op de andere server die de aanpassingen doet, bereid data voor om terug te sturen. aanroepende server ontvangt data en parsed het.

  • 0
Posted

Ik dacht dat xml en xslt web publishing de status depreciated heeft gekregen. Ik zou eerder de PHP api gebruiken om een script te triggeren.

 

Groet,

 

WJ

  • 0
Posted

Inderdaad verlaat Filemaker het XSLT pad om web publishing mogelijk te maken met XML en XSLT.

De PHP API maakt gebruik van de XML Web Publishing van de Filemaker Server.

Als ik dat zo aanschouw, dan denk ik dat Filemaker XML Web Publishing wel blijft ondersteunen.

(XML en XSLT op de client staat los van de Filemaker Server en wordt wel ondersteund door Filemaker.)

 

Terug komen op de vraag van de TS.

Data uitwisselen tussen twee Filemaker Servers of tussen Filemaker Server en MySQL is met XML goed op te zetten.

 

Dat kan met een cronjob en shell scripting.

Met een shell script wordt data via cURL opgehaald (en verstuurd), met bijv. xsltproc tool wordt de XML data getransformeerd.

Ook kan je gebruik maken van PHP scripting (getrickert door cronjob of een Filemaker client script) waarmee XML data met XML DOM

of SimpleXML getransformeerd wordt en d.m.v. cURL data update tussen de Filemaker Servers.

Niet te vergeten Applescript, met Applescript en de al genoemde trickers / tools wordt XML data geparsed en verstuurd worden tussen de Servers.

 

 

Kies de techniek waarmee je het meest vertrouwd mee ben.

 

Dre

  • 0
Posted

Een paar voorzichtige stappen op het XML pad pakken toch niet erg hoopgevend uit.

 

Ik heb een database met een account dat de extended privilegeset fmxml beschikbaar heeft. In het database overzicht van de admin console op de server staat een vinkje in de kolom XML.

Ook heb ik op de server de web publishing engine voor XML geactiveerd. Bij Configuration Web publishing op de tab XML 'Enable XML publishing' aangevinkt. (ter info: IWP draait daar ook en als een zonnetje)

Uit de documentatie haal ik de volgende instructie 'http://192.168.123.101/fmi/xml/fmresultset.xml?–dbnames'. Daarmee zou een lijst met XML enabled databases moeten worden opgehaald. Ik verwacht dus 1 database naam.

Het ip-adres verander ik in het adres van mijn server en plak de url in Safari.

Het resultaat is






Uit de error codes haal ik dat fout 958 betekend dat er een parameter mist...

Welke dan? Volgens mij is er maar 1 en dat is dbnames.

 

Als ik de Web publishing stop op de server, krijg is netjes bericht dat de server niet beschikbaar is.

Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8r DAV/2 mod_jk/1.2.23 Server at  Port 80

Zet ik het weer aan dan volgt de foutmelding.

Als ik al niet eens de databases kan opvragen vrees ik het ergste voor een query of een andere instructie.

Uiteraard heb ik daar ook al mee zitten stoeien, maar ik krijg alleen deze foutmelding terug.

Blijkbaar zie ik iets over het hoofd, maar ik zou niet weten wat.....

 

Iemand die mij uit de brand kan helpen?

 

rmw

  • 0
Posted
Dat kan met een cronjob en shell scripting.

 

Dat is nu juist het pad dat ik wil verlaten.

Het heeft zijn waarde bewezen, maar ik wil graag naar een situatie die ik het helemaal in FM kan beheren en onderhouden.

 

rmw

  • 0
Posted
Dat is nu juist het pad dat ik wil verlaten.

Het heeft zijn waarde bewezen, maar ik wil graag naar een situatie die ik het helemaal in FM kan beheren en onderhouden.

Zoals ik aangaf, kies de optie die het best bij je past.

 

Foutje voor je gevonden:

 

In jouw URL staat –dbnames dat moet zijn -dbnames, wat is het verschil, voor dbnames moet een min teken staan en in jouw url wordt geen min teken gebruikt. Verander maar eens – voor een – (min) teken (-dbnames).

 

Scherpe ogen niet :D

 

Groet Dre

  • 0
Posted
In jouw URL staat –dbnames dat moet zijn -dbnames

 

Wat??????!!!!!! 8O8O8O8O8O

Maar je hebt wel gelijk....

 

Ik mag dus niet uit een pdf voorbeeld kopiëren en plakken

 

We kunnen weer verder :D

 

rmw

  • 0
Posted

Ladies and gentlemen: we've got it! :lol:

http://:@/fmi/xml/FMPXMLRESULT.xml?-db=&-lay=&-script.prefind=

De <> vervangen door de gewenste gegevens en gaan met die banaan.

Dit draait gewoon serverside en sleurt netjes de gevraagde records de database in als je het opneemt als http request bij de script stap Import records/XML source.

 

Het opgegeven script zoekt in mijn geval alle records die voldoen in de brondatabase en voorziet die van het kenmerk dat ik meegeef als parameter.

Vervolgens zoek ik alles waar die parameter in voorkomt en dat resultaat wordt geimporteerd.

De layout is niet onbelangrijk, want alleen de velden die op die layout staan komen in de xml terug. Je kan dus alleen importeren wat op die layout staat.

 

Allen bedankt voor het meedenken!!

 

rmw

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...