OPOS : Why it fails to live up to the hype
UnifiedPOS, OPOS and JavaPOS
UnifiedPOS is the acronym for Unified Point of Service. It is a specification for application interfaces to point-of-service and point-of-sale devices (printers, scanners, cash drawers etc) that are used in the retail environment.
UnifiedPOS is currently maintained by the Association for Retail Technology Standards
(ARTS) of the National Retail Federation (NRF), and is designed to be operating system independent and language neutral.
OPOS (OLE for POS) is one part of the UnifiedPOS specification, Specifically it is based on Microsoft® Component Object Model (COM), ActiveX, and OLE technologies
and targeted on Microsoft Win32®-based operating systems. It was originally formed
by a group of retail hardware vendors (Epson, IBM, ICL and NCR) but is now under the
control of ARTS. In it's current implementation it uses one COM component per hardware device - an OCX for printers, one for scanners, one for cash drawers etc.
The UnifiedPOS comittee also oversees the JavaPOS specification, which is a UnifiedPOS
implementation based on the Java language (thereby making it operating system independent)
JavaPOS was originally just a Java port of the existing OPOS specification - JavaPOS releases prior to 1.3 were simple
Java implementations of the equivalent OPOS specification. It was only with the introduction of the 1.4 releases that the UnifiedPOS comittee
was created to more tightly control the relationship between OPOS and JavaPOS.
Goals
UnifiedPOS has 5 main goals:
Unfortunately there are a number of problems with OPOS:
However, problems can occur when:
a) you are developing a POS application that supports different vendors OPOS controls for each device class.
(IE Symbol scanner, Epson printer, APG cash drawer)
b) you are developing a POS application that supports multiple vendors OPOS controls for the same device class.
(IE IBM scanner, NCR scanner, Symbol scanner, PSC scanner)
c) You upgrade the OPOS controls from one version to the next
d) You integrate an OPOS control from a new hardware vendor into an already working application
Combinations of any of these 4 scenario's can lead to the developer writing custom code
for a specific vendors controls, which is exactly the situation that OPOS was designed to solve in the first place!
OPOS and Clarion
As a Clarion programmer you also have to be aware of the fact that Clarion's support for OCXs is nearly non-existent. You can quite easily add an OCX to a window, but problems occur if
My previous attempt to use OPOS involved integrating 8 OCXs (one for each device class I supported) into a multi-threaded (10-15) multi-DLL (100+) application. It didn't work too well. I couldn't call the OCX methods I wanted to across threads and the OCX events frequently came back to the wrong callback and/or on the wrong thread.
If I had used another development tool (VB, VC++, Delphi etc) then I wouldn't have suffered these problems. However, I'm equally sure that I would still have had the same problems regarding OPOS controls. My problems were simply exaggerated by Clarion.
Future
The optimistic side of me believes that eventually OPOS will eventually deliver - it's just not there yet. Given another couple of years, a few more revisions to the specification and better software from the hardware vendors I believe it will actually become useful, notwithstanding that fact that I still don't believe that COM (in it's present form) is a suitable technology for a retail store.
Of course, the pessimistic side of me believes it's going to plummet to the ground in a ball of fire, much like ActiveRetail did.
Reference
National Retail Federation
http://www.nrf.org/
Association for Retail Technology Standards
http://www.nrf-arts.org/
JavaPOS
http://209.1.255.16/
OPOS common control objects
http://monroecs.com/
Microsoft OPOS
http://www.microsoft.com/business/retail/resources/opos/overview.asp
Back to the home page