Title: Using FileMaker Pro Advanced to create Bandit, an application for bird banders Kevin Laurent USGS Pa
1 Using FileMaker Pro Advanced to create
Bandit, an application for bird bandersKevin
LaurentUSGS Patuxent Wildlife Research
CenterLaurel, MarylandFileMaker Users and
Developers in Government and EducationFall
Meeting, October 3, 2007
2Overview
- Background
- Design Development
- Packaging Issues
- Real artists ship (Release Issues)
- Documentation Subsystem
- Summary Q/A
3Background
- Problems with Band Manager
- FoxPro on Win 95 and Mac OS 8
- Crashes and corruption on Win XP and Mac OS X
- Code base not under our control
- Interface cumbersomefeatures missing
- Early 2006, Project TIMBO begins
4Design Development
- Creating a new design
- Prototyping using FileMaker
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
5Data Entry/Edit Screen from Band Manager
6Band Manager Screens
7A New Design
- Streamline interface
- Implement spreadsheet input/edit
- Use Email for uploading data
- Increase banding location accuracy
8Banding locations map
9Banding locations map (detail)
10Design Development
- Creating a new design
- Prototyping using FileMaker Pro Advanced
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
11FileMaker Pro Advanced
- Relational Database
- Cross-platform support (PC/Mac)
- Easy GUI development environment
- Flexible import/export facility
- Unlimited distribution of runtime (FileMaker Pro
Advanced)
12FileMaker Pro Layout Mode
13Design Development
- Creating a new design
- Prototyping using FileMaker
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
14Error Text field calculation
- If ( not IsEmpty ( is_unique ) and not is_unique
"Duplicated band number" "" ) - If ( Banding Date gt Get ( CurrentDate ) or
- Banding Date lt Date Received "Invalid Banding
Date" "" ) - If ( IsEmpty ( Bird Status ) "Undefined Bird
Status" "" ) - If ( not IsEmpty ( How Aged ) and ListIndex (
ValueListItems ( "Bandit Data" "How Aged" )
How Aged False ) 0 "Invalid How Aged
Code" "" ) - If ( not IsEmpty ( How Sexed ) and ListIndex (
ValueListItems ( "Bandit Data" "How Sexed" )
How Sexed False ) 0 "Invalid How Sexed
Code" "" ) - If (ListIndex ( AOU sizes Band Size False )0
"Bad Size" "" ) - If ( Length ( AOU )lt4 "Invalid Species" ""
) - If ( IsEmpty ( Location ) or LocationIsLocationV
alid "No" "Location used is not valid " ""
) - If ( IsEmpty ( Age Code ) "Invalid Age" "" )
- If ( IsEmpty ( Sex Code ) "Invalid Sex" "" )
15Design Development
- Creating a new design
- Prototyping using FileMaker
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
16Application-Data Separation Model
- Idea Store application-specific stuff in one
database and user-specific stuff in another
database - Changes to application schema, lookup tables,
layouts, scripts can be done without having to do
re-import - Works, but schema is more complex
17Application-Data Separation Model
Application Database Lookup Tables Layouts Script
s
Data Database Data Tables
18Application-Data Separation Model
- Idea Store application-specific stuff in one
database and user-specific stuff in another
database - Changes to application schema, lookup tables,
layouts, scripts can be done without having to do
re-import - Works, but schema is more complex
19Bandit Application Relationships
Bandit App Relationships
20Bandit Data Relationships
21Design Development
- Creating a new design
- Prototyping using FileMaker
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
22Cross-platform issues
- Not many
- External file support
- PDF generation
- PDFCreator (Windows)
- PDF support built into Mac OS X
23Cross-platform screen comparison
Windows XP
Mac OS X
24Cross-platform issues
- Not many
- External file support
- Scripting
- PDF generation
- PDF support built into Mac OS X
- PDFCreator (Windows)
25External Filenames
Set Variable FilePath Value Case( (Get
(SystemPlatform) -1) "filemac"
(Get(SystemPlatform) -2) "filewin"
"file" ) Get (DocumentsPath)
"Bandit_Bands_" prefix Right
("00000" suffix1 5 ) "_" prefix
Right ("00000" suffix2 5 )
"_" Year (Get ( CurrentDate) ) Lpad
(Month (Get ( CurrentDate)) 2 "0" ) Lpad
(Day (Get ( CurrentDate)) 2 "0" ) ".xls"
26Cross-platform issues
- Not many
- External file support
- Scripting
- PDF generation
- PDF support built into Mac OS X
- PDFCreator (Windows)
27Cross-Platform Scripting
If Get ( SystemPlatform ) -1 // Mac Set
Variable theMacPath ValueLet (
thePath Middle (Get ( FilePath ) 6
999) // Strip off file len Length
(thePath) thePathAsValues Substitute
(thePath "/" "") nValues ValueCount
(thePathAsValues) // Count levels
Substitute (LeftValues (thePathAsValues
nValues - 1) "" "") ) Perform
AppleScript Calculated AppleScript "tell
application \"Finder\" delete folder \""
theMacPath "Backup\" end tell" Else //
Win Send Event open document/application
File Name filecleanup.bat Bring
application to foreground End If
28Cross-platform issues
- Not many
- External file support
- Scripting
- PDF generation
- PDF support built into Mac OS X
- PDFCreator (Windows)
29Design Development
- Creating a new design
- Prototyping using FileMaker
- Adding business rules and edits via calculations
- The application-data separation model
- Cross-platform issues
- The Roundup issue tracking system
30Roundup Issue Tracking System
31Packaging Issues
- Creating Installer for Windows (Inno Setup)
- Apple PackageMaker
- Licensing Issues
- Preparing for future releases
- Versioning
- Data schema changes
- Application changes
32Inno Setup
33Inno SetupScripting
34Bandit Windows Install
35FileMaker Runtime Files
36FileMaker Runtime Files
37Packaging Issues
- Inno Setup
- Apple Package Maker Disk Utility
- Licensing Issues
- Preparing for future releases
- Versioning
- Data schema changes
- Application changes
38Packaging for Mac OS X
- Apple Package Maker
- GUI-driven interface
- Hooks at each stage (preflight, preinstall/
preupgrade, postinstall/postupgrade, postflight) - Uses shell scripting
39Mac OS X Preinstall Bash Script
!/bin/bash preinstall and preupgrade script to
save data files in Backup directory Note If 2
were not enclosed in quotes in the next
statement, the script would get an error
if the volume name included a space. if cd "2
then if -f "Bandit App.BND" then if !
-d Backup then echo SCRIPT_NAME
Creating Backup directory in 2 mkdir
Backup chmod 666 Backup fi echo
SCRIPT_NAME Copying data files to Backup
directory... echo SCRIPT_NAME 2/Bandit
App.BND -gt 2/Backup/Bandit App.BND cp
"Bandit App.BND" Backup/ echo SCRIPT_NAME
2/Bandit Data.BND -gt 2/Backup/Bandit Data.BND
cp "Bandit Data.BND" Backup/ echo
SCRIPT_NAME Storing date-time stamp in
2/lastbackup.txt echo date YmdHMS
gtlastbackup.txt else echo SCRIPT_NAME No
Bandit datafiles found in 2 fi else echo
Unable to change to the installation directory.
(It may not exist yet.) fi exit 0
40Bandit Macintosh Installer
41Packaging Issues
- Inno Setup
- Apple PackageMaker
- Licensing Issues
- Preparing for future releases
- Versioning
- Data schema changes
- Application changes
42About Bandit Screen
43Bandit Splash Screen
44Packaging Issues
- Inno Setup
- Apple PackageMaker
- Licensing Issues
- Preparing for future releases
- Versioning
- Data schema changes
- Application changes
45Real artists ship (Release issues)
- Alpha, Beta, and version 1.0
- Keep good release notes
- Beta testers are busy too
- Need beta testers for every platform, language
- Staged releases to different communities
- Waterfowl banders have different needs
- Internal release and training the help desk
- Coordinating training
46Documentation Subsystem
- DocBook SGML, really
- Outputs to XML-FO, HTML, and Helpbook
- Relax NG vs DTD
- Apache Formatting Objects Processor (FOP)
47DocBook Processing
Single-PageHTML
High- Quality PDF
DocBook Source (SGML)
Windows HelpBook
48Bandit Documentation Editing
49Bandit Documentation SGML
50PDF Output
51HTML Output
52Windows Helpbook Output
53FileMaker Mobile
- Supports PalmOS and PocketPC
- Links to Bandit on the Desktop or Laptop
- Dropdown fields and calendar widget
54Bandit Conceptual Overview
55Summary Insight
- Releasing a custom-built software product to
public users is challenging - Process changes Little things can mean a lot
- Band Manager used Banding Schedule
- Bandit replaced Schedule with Submit and allowed
banders to submit data whenever
56Links
- Jrsoftware.orgJordan Russells Software, creator
of Inno Setup, the windows installer packager,
http//www.jrsoftware.org/isinfo.php - FileMakerCreator of FileMaker Pro Advanced 9,
http//www.filemaker.com - Apple Developer ConnectionPackageMaker is part
of the Xcode Development Tools package,
http//developer.apple.com/ - DocBookUsed in the creation of the
documentation, http//www.docbook.org/ and
http//docbook.sourceforge.net/
57Links (continued)
- Apache Formatting Objects ProcessorUsed in the
creation of the documentation, http//xmlgraphics.
apache.org/fop/ - RoundupThe server for tracking bugs, issues, and
feature requests, http//roundup.sourceforge.net/ - PDFCreatorInstalls a printer driver which
creates PDFs like Adobe Acrobat,
http//sourceforge.net/projects/pdfcreator/
58 Using FileMaker Pro Advanced to create
Bandit, an application for bird bandersKevin
LaurentUSGS Patuxent Wildlife Research
CenterLaurel, MarylandFileMaker Users and
Developers in Government and EducationFall
Meeting, October 3, 2007