Application architecture (long post - sorry)

limeydrink at hotmail.com limeydrink at hotmail.com
Sat Dec 31 14:39:39 EST 2005


Hi all,

I want to create a mobile field worker data solution.

Let me explain...

I work for a company that has some software used by call takers to
enter information into a database about faults with electrical
appliances they manufacture, sell to customers, and then provide
maintenance contracts for.

The company has a number of field workers (growing number) servicing
these appliances, and information about the faults and customer
locations is fed to them by printing off job sheets from the call
taking system and then either faxing them to the engineers or the
engineers drop in to the office and collect them.

There are lots of problems with this, such as lost job information,
incomplete forms, incorrect non validated data, the cost of printing
off job sheets and also the engineers having to collect, regular phone
calls to the engineers to update them on call informtion, and then the
fact that all this data then has to be inputted back into another
system manully.

Basically I want to create a means of getting this data to them
electronically.

I know there are a few companies who could provide this solution but
they are very expensive and possibly overkill at the moment, we could
start developing our own basic system then it can grow over time.

I have looked at the options for developing the client for these
"electronic job sheets" and have decided upon Microsoft Pocket PC and
the .net compact framework.  It seems the easiest environment for
developing and the PDA's can be obtained very cheaply as a package from
a GSM/GPRS data carrier.

The server side is where cost savings can be made and so i have decided
on a linux based server side using a database backend such as
PostgreSQL.

It would be usefull (and preferable) to make the server side of the
applicaiton portable, I have looked at Java and quite frankly I have
gone off the idea, it seems too complicated and I don't need to have my
application tick all the buzzword boxes - basically it doesn't need to
be a fashionable solution and if it did I would run it all under
Windows and .net from client to server.  I have decided on Python
(hopefully your advice will confirm to me it's the correct decision)

I have not developed any software of this type before and the trouble I
am having is deciding on how to interface between the client apps and
the server side.

Problem 1 - Physical connectivity
how would I make the actual network connection in to the server from
the client
Running a VPN connection over GPRS ?
Connecting to the web on the client then using web services ?

The above decisions probably depend on the answer to problem 2...
How to connect to the data
If I have a VPN connection to the network as described above could it
be just as simple as using ODBC to connect to the server and access the
data like just any other database application (not knowing how network
heavy this would be over a much slower connection than a LAN)

Or even simpler I could just export data for the engineers into XML or
.csv files and expose them using a web server the client then just
connects to the server and then downloads the job data , and uploads
completed job information

Or (this is where the bulk of the python part comes into it), I create
a network server in Python that the clients connect to this could be a
two way thing then, as the client app could connect first thing in the
morning and collect jobs but I could also push data to the client such
as job updates and notifications making it much smarter and
interactive.

There are currently around 60 engineers and they will be requesting
data at specific times, first thing in morning and probably midday
being the most busy times where probably all engineers will be
connecting at once.

So if I go down the network server route it will have to handle
multiple connections from clients and then connect to a database to
retrieve job information for each specific engineer and then send over
the connection to the client.

The number of engineers is increasing steadily and so this application
needs to be fairly scaleable.

I have a grander plan for this, as much of the work will be done in my
own time, as sort of a pet project, and if possible I would like to
make the application customizable and maybe even sell to other
companies although lets not run before we can walk eh :)


I know this post isn't Python specific but there are some smart guys on
here that could point me in the right direction or at least give me
something to think about :)

Thanks in advance




More information about the Python-list mailing list