[GastForen Programmierung/Entwicklung AppleScript AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

14. Sep 2012, 10:40
Beitrag # 1 von 15
Bewertung:
(6351 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
wir haben seit der Systemumstellung von 10.4.11 und FM 10 auf 10.6.8 und FM 11 diverse Timingprobleme.

Auch aufgrund intensiverer Servernutzung kommt es phasenweise immer wieder dazu, dass Timeouts zu Abstürzen der Scripts führen.

Wir können Delays setzten. Manchmal reicht 1 sek., manchmal nicht mal 10 Sek. Da wir in manchen Scripts innerhalb von Schleifendurchläufen delays setzen müssten, wird das Ganze schon sehr lahm.

Gibt es eine Möglichkeit, einen FM Scriptschritt abzuwarten, bevor der nächste AS Schritt durchgeführt wird? Damit wären wir halt immer so schnell, wie das Netzwerk/die Anwendungen gerade die Daten verarbeiten können.

Bzw. Gibt es eine Möglichkeit, generell auf Rückmeldungen aus einem Programm zu warten, bis AS weiterwerkelt?

Vielen Dank im Voraus und die besten Grüße
Gerd
X

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

masterkey
Beiträge gesamt:

14. Sep 2012, 13:06
Beitrag # 2 von 15
Beitrag ID: #500871
Bewertung:
(6318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 

hallo gerd

offensichtlich beträgt das timeout 2 minuten.
dies lässt sich individuell anpassen/erhöhen.


syntax und beispiel:

Code
with timeout [ of ] integerExpression second[s]  
[ statement ]...
end [ timeout ]


Code
tell application "TextEdit" 
with timeout of 20 seconds
close document 1 saving ask
end timeout
end tell



so gesehen warten skripte immer auf rückmeldungen, aber halt nur 2 minuten. auch dieses verhalten lässt sich beeinflussen.


syntax und beispiel:

Code
considering | ignoring  application responses 
[ statement ]...
end [ considering | ignoring ]


Code
tell application "Finder" 
ignoring application responses
empty the trash
-- other statements that ignore application responses
considering application responses
set itemName to name of first item of startup disk
end considering
-- other statements that ignore application responses
end ignoring
end tell



mehr infos gibt's bei apple:

https://developer.apple.com/...tion/ASLR_intro.html



hoffe das hilft dir weiter.
viel spass.


als Antwort auf: [#500866]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

14. Sep 2012, 13:30
Beitrag # 3 von 15
Beitrag ID: #500874
Bewertung:
(6294 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank masterkey.

Mit dem timeout Befehl habe ich noch nicht gearbeitet. Die Syntax/Logik hatte ich noch nicht verstanden.

Wir haben die Scripts einfach geschrieben und es funktioniert auch lokal. Auch via Server hatte es vor den Umstellungen funktioniert.

Wir haben uns halt mit Delays beholfen. Ohne Delay arbeitet das AS die Befehle ab, egal ob schon ein erwarteter Wert zurückgegeben wurde, oder nicht. Das "oder nicht" hat uns Probleme gemacht.

Wir werden mal versuchen, mit den von Dir genannten Möglichkeiten die Scripts zu optimieren.

Vielen Dank für die ausführlichen Infos und den Link!!

Schönes Wochenende und beste Grüße
Gerd


als Antwort auf: [#500871]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

masterkey
Beiträge gesamt:

14. Sep 2012, 14:23
Beitrag # 4 von 15
Beitrag ID: #500879
Bewertung:
(6270 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 

hi gerd

das oben beschriebene gilt für applescript im allgemeinen, wohl aber nicht für den applescript-befehl «do script» in der filemaker api.
eine mögliche lösungsfindung in diesem fall ist [mir] mit der vorhandenen menge an informationen nicht möglich.

was macht ihr - ausgangslage, ziel?
wie habt ihr das ganze auf apple- und fm-skripte verteilt - wie ist das zusammenspiel?


schöne grüsse.


als Antwort auf: [#500874]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

14. Sep 2012, 15:07
Beitrag # 5 von 15
Beitrag ID: #500883
Bewertung:
(6252 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
vorab: Es geht uns darum, aus einer FM DB Artikeltexte, Seiteninformationen, Katalogname und noch ein paar Einzelheiten zu entnehmen und in InDesign zu bringen.

Wir haben das bisher immer mit QXP gemacht. Mit ID wollen wir im Prinzip eine komplette vorformatierte Seite direkt generieren.

Ich habe als Basis die FM-DB, ein TextWrangler Dok mit einer Liste an Seitenzahlen und ein InDesign Musterdokument.

In der FM DB sind alle Artikeltexte den Seiten zugewiesen.

Das AS fragt mich nach dem TW Dok, dem Musterdok und dem Zielordner, in dem die Doks generiert werden sollen.

Dann schnappt sich das AS die Musterseite, kopiert sie in den Zielordner, benennt sie nach einer einheitlichen Konvention, öffnet das ID Dok, holt sich die Texte aus der FM DB ins ID Dok, speichert und schließt das Dok wieder. Das ganze so lange, bis alle Seiten laut dem TW Dok erstellt werden sollen.

Kurz gesagt: Man kann mit einem Drag & Drop Vorgang textlich einen kompletten Katalog erstellen. (Bilder werden hier noch nicht benötigt)

____

Die AS-Zugriffe auf FM Scripts sollen die Daten zurückliefern, die dann in den entspr. ID Rahmen geladen werden sollen. Wenn z.B. die Daten noch nicht "angekommen" sind, lädt das Script nichts in den Rahmen.

Es gibt mehrere solcher Schritte, die zu Problemen führen können.

Die Kombination von neuen schnellen Rechnern, belastetem Netzwerk und Rechenzeiten auf dem Server sorgen also dafür, dass die Daten nicht rechtzeitig geliefert werden oder z.B. der Dok.-Kopiervorgang nicht schnell genug von Statten geht. Nicht immer, aber zu oft.

Wir behelfen uns nun mit Delays, was aber wie gesagt nicht wirklich schick ist, zumindest nicht, wenn wir das in Schleifendurchläufe packen müssen.

Hier wäre eben eine Lösung schick, die erst das Ergebnis aus FM abwartet um dann den nächsten AS Schritt zu starten.

VG
Gerd


als Antwort auf: [#500879]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

masterkey
Beiträge gesamt:

14. Sep 2012, 15:25
Beitrag # 6 von 15
Beitrag ID: #500886
Bewertung:
(6239 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
hallo gerd

was genau macht denn das filemakerskript? könnten die daten nicht direkt mit applescript aus der fm db ausgelesen werden?


schöne grüsse


als Antwort auf: [#500883]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

-hans-
Beiträge gesamt: 748

14. Sep 2012, 15:55
Beitrag # 7 von 15
Beitrag ID: #500889
Bewertung:
(6220 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ollah,

vllt. kannst Du im AS schon festlegen was erwartet wird als Rückgabe und dann halt ne Schleife drehen bis alles da ist oder kontrolliert abbrechen ...


als Antwort auf: [#500883]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

14. Sep 2012, 16:15
Beitrag # 8 von 15
Beitrag ID: #500891
Bewertung:
(6193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
- erst mal Danke schön! Ich schreib hier die Antwort und es kommen die nächsten Sachen zeitgleich ;-) -

das FM Script ruft aufgrund der Seiteninfo aus dem TW Doc die entsprechende Seite auf, sortiert die Daten nach der Reiehenfolge auf der Seite und nimmt sich die getaggten, bereits mit Stilvorlagen usw. versehen Daten aus dem entspr. Ausgabe-Feld, um sie in ID zu übernehmen. Außerdem wird auch eine Prüfung gemacht, ob es die Seite schon gibt. Dazu wird ein Wert in ein Kontrollfeld geschrieben.

VG
Gerd


als Antwort auf: [#500886]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

14. Sep 2012, 16:21
Beitrag # 9 von 15
Beitrag ID: #500892
Bewertung:
(6186 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ihr müsst euch das so vorstellen, das im FM Felder je Stilvorlage angelegt sind, in denen der entsprechende, getaggte Code liegt. Per Formelfelder werden dann Daten mit Tags versehen und dann in einen ID Rahmen übertragen. Außerdem auch die Seite, Arbeitsseite, Katalogname, Memotexte (Arbeitsanweisungen außerhalb des Layoutbereichs)...

Wir sehen kaum die Möglichkeit aufgrund der Komplexität, alles über AS zu steuern. Außerdem haben wir viiiiel mehr Ahnung von FM als von AS und sind schon mal stoz, dass wir das bis dahin schon mal hinbekommen haben.

Dabei kommen uns wir jetzt noch Unterstützungen hilfreichst zu Gute, die uns Hans im Laufe der letzten Jahre gegeben hat.

Für uns wäre es deshalb eben genial, wenn wir dafür sorgen könnten, das AS "wartet", bis FM fertig gerechnet hat.

Gruß
Gerd


als Antwort auf: [#500891]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

masterkey
Beiträge gesamt:

14. Sep 2012, 17:23
Beitrag # 10 von 15
Beitrag ID: #500895
Bewertung:
(6148 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
hallo gerd

kann immer noch nicht genau verstehen, wer (fm/as) genau was macht.
hab's so verstanden, dass fm die daten, getriggert durch as, aufbereitet und as dann das ganze (aus einem feld, welches die aufbereiteten daten enthält) ins indesign «schiebt».

ich hab nur kurz einen versuch in fm12 gemacht - applescript wartet nicht auf ein filemakerskript!
und so wie ich das sehe ist ein fm skript auch nicht in der lage, einen rückgabewert [direkt] an ein as skript zu übergeben.

ich kann mir zwei mögliche lösungansätze vorstellen:

• alles über applescript lösen
• alles über filemaker lösen


wer kuchen backen will, muss eier zerschlagen!



schöne grüsse.


als Antwort auf: [#500892]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Uwe Laubender
Beiträge gesamt: 5318

14. Sep 2012, 18:32
Beitrag # 11 von 15
Beitrag ID: #500899
Bewertung:
(6121 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Gerd!

Könnte nicht FM zum Abschluß eine kleine log-Textdatei schreiben auf die das AppleScript reagieren könnte?

Also: ist die Datei noch nicht vorhanden, noch mal in einer Sekunde nachschauen; ist sie denn vorhanden, geht's weiter mit dem Scriptablauf.

Nach Ablauf des AppleScripts dann die log-Datei entfernen…


als Antwort auf: [#500866]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

17. Sep 2012, 15:26
Beitrag # 12 von 15
Beitrag ID: #500968
Bewertung:
(6044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe und masterkey,

@masterkey
Genau um den Effekt, den Du in der 12er Version auch gesehen hast, gehts mir. Jetzt versuchen wir halt, über einen anderen Weg das Problem in den Griff zu bekommen.

@Uwe
... und genau das ist auch unser Ansatzpunkt. Wir würden eine Wert in ein Feld schreiben lassen lassen, sobald die Daten gerechnet sind. AS prüft in einer Schleife, wann ein Wert in dem Kontrollfeld steht und macht dann weiter.

Irgendwie a bissl blöd aber ist halt kaum anders lösbar.

Vielen Dank zusammen!!

Gruß
Gerd


als Antwort auf: [#500899]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Hans Haesler
  
Beiträge gesamt: 5826

17. Sep 2012, 18:02
Beitrag # 13 von 15
Beitrag ID: #500991
Bewertung:
(6018 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

vorerst mal: welcome back! :-)

Ich habe mich bisher nicht gemeldet, weil ich keinen FileMaker zur Verfügung habe.

Wie wirst Du das Prüfen in einer Schleife einrichten? Wenn man nichts vorkehrt, dann wird die Abfrage x-mal pro Sekunde gemacht und das kann die Ausführung bremsen.

Besser ist, einen on idle-Handler einzurichten. Dann kann man die Anzahl Abfragen einschränken. Ein Beispiel findest Du in dieser Diskussion: http://www.hilfdirselbst.ch/..._P421680.html#421680

In jenem Beispiel findet sich die Zeile return 5. Das bedeutet, dass alle fünf Sekunden der Handler listFiles() aufgerufen wird. Dieses Intervall kann man beliebig ändern. Seit Mac OS X 10.3 sind auch Nachkommastellen zugelassen: mit return 0.5 wird zwei Mal pro Sekunde nachgeschaut.

Bedingung ist allerdings, dass das Script im Dateiformat Programm gespeichert ist und dass die Checkbox Nicht automatisch beenden aktiviert ist.

Lesestoff: http://macscripter.net/viewtopic.php?id=24568

Gruss, Hans


als Antwort auf: [#500968]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

17. Sep 2012, 22:29
Beitrag # 14 von 15
Beitrag ID: #500998
Bewertung:
(5977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, schön etwas von Dir zu hören!

Vielen Dank für den Hinweis. Genau das ist unser Ansatz. Wenn es länger als 5 Sek dauert, dann kann der Scriptschritt enden. Dann gibt es die Seite nicht. Das Dokument wird geschlossen und das nächste abgearbeitet.

Mittlerweile haben wir endlich updaten können, da unsere Kunden ebenfalls mit neueren Systemen arbeiten. War ein großer Sprung und einiges an Arbeit nötig, die Skripte auf Vordermann zu bringen. Wir haben jemand zur Unterstützung. Die Dame ist sehr fit. Wir konnten uns aber auch selbst sehr viel helfen. Wird immer besser.

Als denn, bis bald und eine gute Zeit, LG
Gerd


als Antwort auf: [#500991]

AS soll warten, bis ein FM-Script (oder Scriptschritt) abgearbeitet ist

Kultgerd
Beiträge gesamt: 61

18. Sep 2012, 15:39
Beitrag # 15 von 15
Beitrag ID: #501036
Bewertung:
(5917 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Soweit ich den Handler "on idle" verstanden habe, wird er nur ausgeführt wenn das Applescript nichts mehr zu tun hat und in Warteposition ist.

Nach dem Applescript von Filemaker, laufen allerdings auf dem lokalen Rechner über Applescript noch weitere Aktionen die danach weiter abgearbeitet werden sollten.

Die Schleife von Daten läuft:
1. Lokal Applescript -> Filemaker zu InDesign -> Lokal Applescript
2. Lokal Applescript -> Filemaker zu InDesign -> Lokal Applescript
3. Lokal Applescript -> Filemaker zu InDesign -> Lokal Applescript
.
.

Versucht habe ich es nun mit einem Abgleich zu einem Wert in Filemaker (der gesetzt wird, wenn es durch ist) und danach wieder gelöscht. Allerdings kopiert Filemaker zeitgleich Werte von Feldern zu InDesign und es kommt zu diversen Fehlermeldungen und Konflikten.

Letzte Möglichkeit die mir noch einfällt, ist eine Art Trigger File das kontrolliert wird. Aber vielleicht gibt es doch noch eine andere und bessere Möglichkeiten?!

Viele Grüße
Gerd (Hat alles mein Kollege Andreas eingetippt, der noch zu bequem war, sich nen Acc anzulegen ;-) )


als Antwort auf: [#500991]
X