FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
1. FileMaker Konferenz2010
Programmstrukturen -- FileMaker
Skripten nicht nur für Experten
Neue und moderne Programmierkonzepte für FileMaker Entwickler.
*
Dr. Volker Krambrich, NORSULT
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
2. FileMaker Konferenz2010
Einführung
Programmieren
Konzepte aus modernen Programmiersprachen (zum Beispiel Java,
Objective C…) kann man auch in FileMaker brauchen:
• Kapselung,
• Information hiding,
• Methoden,
• Vererbung.
Daneben gibt es Arbeitstechniken wie Dekomponieren
(Decomposition), und methodische Ansätze ( Algorithmische
Optimierung) die vorgestellt werden.
Die Idee „generischer Scripte“ oder „generischer Operationen” ist
jedem Entwickler vertraut. Der ScriptSchritt ,Neuer Datensatz‘ ist
ein typisches Beispiel. Wie funktioniert das und wie können wir
etwas ähnliches selbst bauen?
Ich werde zeigen und erklären, was man darunter versteht, warum
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
3. Volker Krambrich
NORSULT Database Professionals
• FileMaker seit 1989
• FMK seit 2010
• zertifiziert als Entwickler
und Trainer
• Linguist und Informatiker
• dr.filemaker@mac.com
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
4. Was ist
Programmieren?
Programmierung (von griechisch
prógramma „Vorschrift“) bezeichnet
die Tätigkeit, Computerprogramme zu
schreiben. Dies umfasst vor allem die
Umsetzung (Implementierung) des
Softwareentwurfs in Quellcode und, je
nach verwendeter
Programmiersprache, dessen
Übersetzung in die Maschinensprache.
(Wikipedia)
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
5. Algorithmen
Eine Berechnungsvorschrift zur Lösung eines Problems
heißt genau dann Algorithmus, wenn eine zu dieser
Berechnungsvorschrift äquivalente Turingmaschine
existiert, die für jede Eingabe, die eine Lösung besitzt,
stoppt.
Aus dieser Definition sind folgende Eigenschaften eines
Algorithmus ableitbar:
1. Das Verfahren muss in einem endlichen Text eindeutig
beschreibbar sein (Finitheit).
2. Jeder Schritt des Verfahrens muss tatsächlich ausführbar
sein (Ausführbarkeit).
3. Das Verfahren darf zu jedem Zeitpunkt nur endlich viel
Speicherplatz benötigen (Dynamische Finitheit, siehe
Platzkomplexität).
4. Das Verfahren darf nur endlich viele Schritte benötigen
(Terminierung, siehe auch Zeitkomplexität).
Darüber hinaus wird der Begriff Algorithmus in praktischen
Bereichen oft auf die folgenden Eigenschaften eingeschränkt:
1. Der Algorithmus muss bei denselben Voraussetzungen
das gleiche Ergebnis liefern (Determiniertheit).
2. Die nächste anzuwendende Regel im Verfahren ist zu
jedem Zeitpunkt eindeutig definiert (Determinismus).
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
11. Was werden wir
machen?
• erste Schritte:
Einen Schalter umlegen
• Werkzeuge betrachten
Arbeitstechniken, Dokumentation, Entwurf
• ein komplexes Praxisbeispiel:
FEIM File Export and Import Manager
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
13. Was werden wir
machen?
✓erste Schritte: Was soll das?
Einen Schalter umlegen
• Werkzeuge betrachten
Arbeitstechniken, Dokumentation, Entwurf
• ein komplexes Praxisbeispiel:
FEIM File Export and Import Manager
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
14. Was soll man machen?
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
15. Was soll man machen?
Prüfung der Eingabe
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
16. Was soll man machen?
Prüfung der Eingabe
Prüfung der Zulässigkeit
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
17. Was soll man machen?
Prüfung der Eingabe
Prüfung der Zulässigkeit
Prüf. d. Durchführbarkeit
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
18. Was soll man machen?
Prüfung der Eingabe
Prüfung der Zulässigkeit
Prüf. d. Durchführbarkeit
Versuch Durchführung
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
19. Was soll man machen?
Prüfung der Eingabe
Prüfung der Zulässigkeit
Prüf. d. Durchführbarkeit
Versuch Durchführung
Kontrolle Durchführung
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
20. Was soll man machen?
Prüfung der Eingabe
Prüfung der Zulässigkeit
Prüf. d. Durchführbarkeit
Versuch Durchführung
Kontrolle Durchführung
Ergebnis liefern
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
21. Was soll man machen?
tf re i! Prüfung der Eingabe
nte x Prüfung der Zulässigkeit
Prüf. d. Durchführbarkeit
Ko Versuch Durchführung
Kontrolle Durchführung
Ergebnis liefern
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
22. Was soll man machen?
• Keep your programs DRY
*) Don‘t Repeat Yourself
• Ein Script für eine Problemklasse!
• Mach es gut und richtig – einmal!
• Nichts einbauen, was nicht zum Problem
gehört.
• Kommentieren!
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
24. Kommentieren
• Standard: Wer hat wann was warum gemacht
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
25. Kommentieren
• Standard: Wer hat wann was warum gemacht
• Das nicht Offensichtliche beschreiben
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
26. Kommentieren
• Standard: Wer hat wann was warum gemacht
• Das nicht Offensichtliche beschreiben
• Irrwege und Alternativen festhalten
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
27. Kommentieren
• Standard: Wer hat wann was warum gemacht
• Das nicht Offensichtliche beschreiben
• Irrwege und Alternativen festhalten
• Für wen?
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
28. Kommentieren
• Standard: Wer hat wann was warum gemacht
• Das nicht Offensichtliche beschreiben
• Irrwege und Alternativen festhalten
• Für wen?
• Für Mich! Ich bin wahrscheinlich der andere
Entwickler der in zwei Monaten reinschaut…
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
29. Arbeitstechniken
• Kommentieren
• Planen und dokumentieren
• Prosa, Skizzen, Diagramme
• Werkzeuge benutzen
• DDR, CrossCheck, BaseElements, Inspector
• Das Web als Hilfe und Anregung benutzen
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
30. Arbeitstechniken
• Kommentieren
• Planen und dokumentieren
• Prosa, Skizzen, Diagramme
• Werkzeuge benutzen
• DDR, CrossCheck, BaseElements, Inspector
• Das Web als Hilfe und Anregung benutzen
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
31. Special
Script Universe
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
33. Arbeitstechniken
Beispiel: Programmentwurf, zwei Modelle
Flussdiagramm vs. Nassi-Shneidermann diagramme
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
34. Was werden wir
machen?
✓erste Schritte:
Einen Schalter umlegen
Anwendung
✓Werkzeuge betrachten
Arbeitstechniken, Dokumentation, Entwurf
• ein komplexes Praxisbeispiel:
FEIM File Export and Import Manager
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
35. FEIM
FileExportImportMngr
FEIM File Export- and
Import-Manager
• Ein Kunde hat ein komplexes, gewachsenes FM System
• Das System kommuniziert mit anderen Systemen
• Es wird mit internen und externen Servern verbunden
• Es wurden > 280 einzelne Kontaktskripten entdeckt
• Die Architektur war zu unflexibel
• Was tun?
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
36. FEIM File Export- and
Import-Manager
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
37. V.1.2 (16.2.2012) vk
Create Offers and Reservations to be
synchronized with external system
The overall data model says that each object (offer or reservation) can have one or many positions;
An offer refers to an (public, externally known) client. An OfferRow points to the containing Offer and one product, that must be both internally
Client
Product
Offer
OfferRow
the model implicitly states that 1) Clients and Products are mutually known and for both system identifiably tagged, 2) the idea of an offer must
be compatible. In SAP e.g. each offer contains only one row from our picture, combined with data that we store in Offer.
This will need to be reflected in the supporting routines.
Add New! Begin Statusfields in tables
Offer
OfferRow
Revoke the
mark to be
Storage LastRun
Storage LastRun
enter an offer manually
synched
open
no RunID
local
no RunID
Set offer
This status combination means| the offer has never been
to be
opened to the external system and all local editing is allowed,
synched
Transition
including deletion of rows and offers without outside effect.
Repeat for all rows
affects here!
and check completeness
Check for completeness
Check for status
Set AddOffer marker
Revoke AddOffer marker
local
no RunID
Close and lock the offer
local
no RunID
Re-open the offer, editing
(editing of certain parts is
of all parts is allowed
still allowed)
This status combination means| the offer has never been
opened to the external system and all local editing is allowed,
including deletion of rows and offers without outside effect,
also the SetToBeSynched maybe revoked, still.
End.
In the above state an offer or reservation respectively may be set to
"Open to SAP" if at least one complete row is filled in.
Further business rules as to what complies with 'completeness' in terms
of SAP have still to be defined!
Export New!
Begin Statusfields in tables
Offer
OfferRow
select all new to be Storage LastRun
Storage LastRun
added
local
no RunID
local
no RunID
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen foundFileMaker Skripting… FEIM
-- any?
Yes
call
$Current RunID
www.filemaker-konferenz.com
getFileName w RunID
38. Repeat for all rows
and check completeness
Check for completeness
Check for status
Set AddOffer marker
Revoke AddOffer marker
local
no RunID
Close and lock the offer
local
no RunID
Re-open the offer, editing
(editing of certain parts is
of all parts is allowed
still allowed)
This status combination means| the offer has never been
opened to the external system and all local editing is allowed,
including deletion of rows and offers without outside effect,
also the SetToBeSynched maybe revoked, still.
End.
In the above state an offer or reservation respectively may be set to
"Open to SAP" if at least one complete row is filled in.
Further business rules as to what complies with 'completeness' in terms
of SAP have still to be defined!
Export New!
Begin Statusfields in tables
Offer
OfferRow
select all new to be Storage LastRun
Storage LastRun
added
local
no RunID
local
no RunID
call FEIM
found any?
Yes
$Current RunID
getFileName w RunID
No
call FEIM
success?
write export file
xxxADD.xls
tellNoExport w reason
No
No
success?
Yes
Transition
affects here
call FEIM
call FEIM
all status fields!
doRollback w ErrorID
doCommit
Change status in
exported Records
End.
More than one process exporting and reporting to FEIM may
access and modify records. The saved RunID must thus be synch
$current RunID
synch
$current RunID
constructed as a combined value from ProcessID and
$currentRunID.
Only then can a process and file be determined uniquely.
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
39. Diagram Export Winpos XML
FEIM
Example Nassi-Shneiderman / 20120220 gbn
Initialize process setting
Set Focus (Layout)
Find records to export
Records found and no error
Yes No
Call Feim GetFileName
Got filename
Yes No
export records
Call
OK ?
Yes No
Call Feim
Commit
Error to report ?
Yes No
Call Feim Rollback No records found ?
Yes No
Call Feim
Call
NoRecordsfound
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com
40. …und in FileMaker
Dr. Volker Krambrich, NORSULT FileMaker Konferenz 2012 Salzburg
Programmstrukturen -- FileMaker Skripting… www.filemaker-konferenz.com