Epiphanic Networks' Wikka : JPoS

Home :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Java Point of Sale Terminal


Last edited by KogAdmin:
bump
Sun, 24 Sep 2006 07:08 PDT [diff]

REQUIRED!!!: PLEASE read the section on licensing!
 

What am I?


A point of sale (read: cash register+) system written using Swing and as many cross-platform tools as possible.

My company is asking me to write a PoS system to work with OFBiz, using the following setup:

Workflow is pretty basic, it does:

Most of the logic is done via the server, so you can think of this as a middle-thin client (not quite fat/thick but not quite light/thin... perhaps "curvy?"). Addition logic and simple operations are done on the client side, some caching is done server side and help and device IO is all handled locally. Lookups, identification and the entire data store is on the backing store however, and a lot of the actual logic of the use cases will be done as operations against a given packet or package of data sent by the "curvy" client.

My current plan is to have the PoS do some agent magic (listed below) to get its state, allow device IO with cached lookups for products, and do most of the business logic on the back-end. Terminals are not necessarily trusted.

I am currently developing against 1.4.2!

Java?


Yes... Java. Mono and SWF aren't really mature - and I'm also not necessarily confident with the idea of device control (I know .NET2 has System.IO.ports for serial work, and some sort of printing... but is it portable?) and technologies like wxWidgets or Python or TCL/TK just didn't make sense. Not to mention our back-end is written in Java (OFBiz) so I can capitalize on RMI. RMI-IIOP seems to be served, but the OFBiz folks were kind enough to actually write a remote dispatcher that saves me about a ton and a half of work.

No, I do not believe Java will be too slow. Java provides all the tools I need, it's a language I know, and with a few exceptions it's pretty much the most portable solution for the problem. It's also plenty easy to find a developer that knows Java and Swing. It also provides LAF (look-n-feels), hardware abstractions (javax.comm, printing API) and is extremely portable (it's available for supposedly 100+ systems).

I haven't used SWT on this project because I didn't want to use Eclipse (although, that's not knocking Eclipse - it's just too heavy for this project) in any capacity: whether in development or the RCP at runtime. SWT, like other toolkits/languages provides no value added and introduces overhead. I'm also not sure about licensing, and I've never actually used it, where I've written in Swing. Porting to SWT might occur later, as most of the app is actually on the server side.

GTK was not right either, and can have some serious issues on anything not Nix originated.

Netbean's Matisse editor is actually quite nice, if somewhat proprietary. It's my first time relying on an IDE for such things, but I'm fairly confident that I know exactly what the IDE is doing and that it's not a crutch but a tool.

Licensing issues


I have no formal agreement with my employers about IP, but so far I've been allowed to keep ownership of anything I can open source and tenatative agreements with my boss lead me to believe that I can open source this project in the interest in building goodwill and knowledge in the OFBiz community. I retain authorship (of course) and this will most likely be released under the GPL license, but may be released under anything we want now that OFbiz is Apache 2.0 licensed (see http://www.apache.org/licenses/LICENSE-2.0).

I'm not sure about the sale and redistribution, but the aim is that the application be open source. There will most likely be an injunction on sale of the software, to protect the monetary investment of my employers.

All objects listed here are designed by me and later integrated into OFBiz using their entity engine. Everything on this page not directly integrated into OFBiz is my sole creation and ownership - not necessarily owing to OFBiz or entities owned or authored thereof. While this system is meant for OFBiz, it can theoretically be applied to any system that has a need for a point of sale terminal and has a central backing store willing to do things like user and product lookup, even if you don't want to use RMI.

Eventually I hope to have a backing store interface for uniformity. Hopefully a modular object you can swap in.

Project Status


Building RMI transport of objects and relevent hookins to OFBiz. Client UI in usable status, but not hooked up to anything.

Build tools


I'm using Netbeans on this one because the form construction is pretty nice. I can distribute JARs, but a part of the Swing source is in a proprietary XML file - there might be some tools to remedy this, and I sincerely hope so because it'd be nice to turn this into a "normal" project.

Netbeans makes use of Ant files, so I've also got a build.xml (pretty standard to netbeans).

Progress


Ok, getting pretty close to RC1... all that's left to do is get a printing API hookin and a javax.comm hookin for the cash drawer. Oh, and get the storeOrder to actually store. I've got a capture from my co-worker, so hopefully I can figure that out...




I am currently building in the last two services - return and sale. Lastly I'm doing the creation of a new agent. Breakdowns/Till balance may, or may not happen.

Stats: {42 Files} :: {6935 Lines of source} :: {Getting there...}

Developer documentation





This page is CategoryJPoS

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.1005 seconds