I am having trouble figuring out the "step by step" process to deploy
POS with synchronization. First area of clarification - How do I get the various pieces deployed and talking to each other? I have reviewed all the documentation I can find, and also the related config files. Here is what I understand so far: 1) Setup all the necessary entities (stores, facilities, products, pricing, etc.) 2) Create POS sync settings to define what entities will be synced (example PosSyncSetting.xml) 3) Define terminals per example DemoRetail.xml 4) Set entity-sync-rmi in serviceengine.xml file 5) Schedule the sync service So where do I do each of these? Master server, per store server, pos, all of the above? For example, if I have a configuration of one store, one pos terminal in the store, and one central server I want the flow to be: Push product, pricing, etc from central server down to POS terminal: MCS -> PSS -> POS Pull transactions from POS terminal to MCS: POS -> PSS -> MCS So let's start with the central server as the majority of setup will occur here. The main question I have about the central server is, how does it know where to "Push"? There is only one setting in serviceengine.xml for entity-sync-rmi. So how do I configure multiple per store servers? Or do I misunderstand the use of "PUSH" in the config file? Is everything really "Pull?" So we just point each deployment to the server where it should communicate? For example the POS terminal would always be configured to talk to the PSS, PSS to MCS? Is it necessary to use a PSS, or can we go straight from POS->MCS? And for those of you also trying to come up to speed on POS, here is the glossary: MCS = Main Central Server PSS = Per Store Server POS = Point of Sale -- Vince Clark Global Era The freedom of open source. (303) 493-6723 (303) 455-2409 fax [hidden email] <mailto:[hidden email]> www.globalera.com |
Vince
I have been looking at this myself and was turned onto EnterpriseDB which has a nice replication server. I want all my stores using the same central database and the local database only when the internet breaks. EnterpriseDB's replication server works for that. Somewhat costly, but not nearly as bad as Oracle. Just gotta add (maybe it's already there?) some failover logic. Skip -----Original Message----- From: Vince Clark [mailto:[hidden email]] Sent: Tuesday, September 18, 2007 2:49 PM To: [hidden email] Subject: POS Setup I am having trouble figuring out the "step by step" process to deploy POS with synchronization. First area of clarification - How do I get the various pieces deployed and talking to each other? I have reviewed all the documentation I can find, and also the related config files. Here is what I understand so far: 1) Setup all the necessary entities (stores, facilities, products, pricing, etc.) 2) Create POS sync settings to define what entities will be synced (example PosSyncSetting.xml) 3) Define terminals per example DemoRetail.xml 4) Set entity-sync-rmi in serviceengine.xml file 5) Schedule the sync service So where do I do each of these? Master server, per store server, pos, all of the above? For example, if I have a configuration of one store, one pos terminal in the store, and one central server I want the flow to be: Push product, pricing, etc from central server down to POS terminal: MCS -> PSS -> POS Pull transactions from POS terminal to MCS: POS -> PSS -> MCS So let's start with the central server as the majority of setup will occur here. The main question I have about the central server is, how does it know where to "Push"? There is only one setting in serviceengine.xml for entity-sync-rmi. So how do I configure multiple per store servers? Or do I misunderstand the use of "PUSH" in the config file? Is everything really "Pull?" So we just point each deployment to the server where it should communicate? For example the POS terminal would always be configured to talk to the PSS, PSS to MCS? Is it necessary to use a PSS, or can we go straight from POS->MCS? And for those of you also trying to come up to speed on POS, here is the glossary: MCS = Main Central Server PSS = Per Store Server POS = Point of Sale -- Vince Clark Global Era The freedom of open source. (303) 493-6723 (303) 455-2409 fax [hidden email] <mailto:[hidden email]> www.globalera.com |
Just a quick note on this: the entity sync stuff is different from database replication as it has different configs for different servers so only the relevant data is needed. A good db level replication tool could probably do something similar, but you would miss some EECA rules that OFBiz runs based on data moving around and stuff like that. -David Skip wrote: > Vince > > I have been looking at this myself and was turned onto EnterpriseDB which > has a nice replication server. I want all my stores using the same central > database and the local database only when the internet breaks. > EnterpriseDB's replication server works for that. Somewhat costly, but not > nearly as bad as Oracle. > > Just gotta add (maybe it's already there?) some failover logic. > > Skip > > -----Original Message----- > From: Vince Clark [mailto:[hidden email]] > Sent: Tuesday, September 18, 2007 2:49 PM > To: [hidden email] > Subject: POS Setup > > > I am having trouble figuring out the "step by step" process to deploy > POS with synchronization. > > First area of clarification - How do I get the various pieces deployed > and talking to each other? I have reviewed all the documentation I can > find, and also the related config files. Here is what I understand so far: > 1) Setup all the necessary entities (stores, facilities, products, > pricing, etc.) > 2) Create POS sync settings to define what entities will be synced > (example PosSyncSetting.xml) > 3) Define terminals per example DemoRetail.xml > 4) Set entity-sync-rmi in serviceengine.xml file > 5) Schedule the sync service > > So where do I do each of these? Master server, per store server, pos, > all of the above? For example, if I have a configuration of one store, > one pos terminal in the store, and one central server I want the flow to be: > Push product, pricing, etc from central server down to POS terminal: > MCS -> PSS -> POS > > Pull transactions from POS terminal to MCS: > POS -> PSS -> MCS > > So let's start with the central server as the majority of setup will > occur here. The main question I have about the central server is, how > does it know where to "Push"? There is only one setting in > serviceengine.xml for entity-sync-rmi. So how do I configure multiple > per store servers? Or do I misunderstand the use of "PUSH" in the config > file? Is everything really "Pull?" So we just point each deployment to > the server where it should communicate? For example the POS terminal > would always be configured to talk to the PSS, PSS to MCS? > > Is it necessary to use a PSS, or can we go straight from POS->MCS? > > And for those of you also trying to come up to speed on POS, here is the > glossary: > MCS = Main Central Server > PSS = Per Store Server > POS = Point of Sale > -- > Vince Clark > Global Era > The freedom of open source. > (303) 493-6723 > (303) 455-2409 fax > [hidden email] <mailto:[hidden email]> > www.globalera.com > |
In reply to this post by Vince Clark
There is a lot more to this than you have described.
there is no defined way to do what you have describe, to my knowledge. then again, someone may have slipped it in with out my knowing when I proposed this sometime ago, I left the actual way to communicate open. All the services that were used to communicate called one service that was the actual service for sending the data to the next level. up down or both. so I plugged in the communications to update services that were already in place, and added updates for the stuff updates services I added. I opted, since I already use ssl xml communications from other stores, to keep that form of communications between levels. I use different URL's for the different functions as a way to put them thru the controller and into the events. Since then I have defined two communications 1)non urgent updates 2) real time updates. Real time updates for things like pos transactions so the product is put in reserve till the pos sale is complete then an order is completed. this reduces problems with out of stock. Using the same code for holding a item but a type is added to "holding for POS". also the inventory updates are realtime both directions. so far have not run into overlap, but I believe with a big enough system, that will happen. Non urgent are for stock reorder and transfers. for the purist I assume they will opted for SOAP or XMLRPC. Since stores can be defined at each location and the prefix to the order can be unique the only consideration is the key size at the top level so it can keep all the orders for all the stores. I can see the key size needing to be increased considerable in a large system, for order entity. so each POS is a mini store so you have Store(ID)POS(id) as a prefix to the top level. and POS(id) to identify which POS terminal it came from at the store level. so you can see that Key for the orders can be large for a national chain. at the top level I use facilities to define the stores and this is where the communication is setup to the lower level. I am still working on the code that initializes a new store and new POS in the store from the upper levels. Vince Clark sent the following on 9/18/2007 2:49 PM: > I am having trouble figuring out the "step by step" process to deploy > POS with synchronization. > > First area of clarification - How do I get the various pieces deployed > and talking to each other? I have reviewed all the documentation I can > find, and also the related config files. Here is what I understand so far: > 1) Setup all the necessary entities (stores, facilities, products, > pricing, etc.) > 2) Create POS sync settings to define what entities will be synced > (example PosSyncSetting.xml) > 3) Define terminals per example DemoRetail.xml > 4) Set entity-sync-rmi in serviceengine.xml file > 5) Schedule the sync service > > So where do I do each of these? Master server, per store server, pos, > all of the above? For example, if I have a configuration of one store, > one pos terminal in the store, and one central server I want the flow to be: > Push product, pricing, etc from central server down to POS terminal: > MCS -> PSS -> POS > > Pull transactions from POS terminal to MCS: > POS -> PSS -> MCS > > So let's start with the central server as the majority of setup will > occur here. The main question I have about the central server is, how > does it know where to "Push"? There is only one setting in > serviceengine.xml for entity-sync-rmi. So how do I configure multiple > per store servers? Or do I misunderstand the use of "PUSH" in the config > file? Is everything really "Pull?" So we just point each deployment to > the server where it should communicate? For example the POS terminal > would always be configured to talk to the PSS, PSS to MCS? > > Is it necessary to use a PSS, or can we go straight from POS->MCS? > > And for those of you also trying to come up to speed on POS, here is the > glossary: > MCS = Main Central Server > PSS = Per Store Server > POS = Point of Sale |
In reply to this post by David E Jones
Skip and David. Thanks for responding quickly to my post. I definitely
need to use entity synchronization, not database replication. We're under the gun to deliver a proof of concept this week. I know the entity sync works, or at least I trust that it does. I am going thru the exercise of reverse engineering how it works based on a demo install. The demo data sets up all necessary entities like stores and terminals. But there is no default configuration for synchronization. I would expect this, as host names would change on a case by case basis. So I would not expect a default config. Unfortunately that makes it difficult to understand how to set up entity sync by example. Any hints, links, etc. that could speed up the learning curve would be greatly appreciated. David E Jones wrote: > > Just a quick note on this: the entity sync stuff is different from > database replication as it has different configs for different servers > so only the relevant data is needed. A good db level replication tool > could probably do something similar, but you would miss some EECA > rules that OFBiz runs based on data moving around and stuff like that. > > -David > > > Skip wrote: >> Vince >> >> I have been looking at this myself and was turned onto EnterpriseDB >> which >> has a nice replication server. I want all my stores using the same >> central >> database and the local database only when the internet breaks. >> EnterpriseDB's replication server works for that. Somewhat costly, >> but not >> nearly as bad as Oracle. >> >> Just gotta add (maybe it's already there?) some failover logic. >> >> Skip >> >> -----Original Message----- >> From: Vince Clark [mailto:[hidden email]] >> Sent: Tuesday, September 18, 2007 2:49 PM >> To: [hidden email] >> Subject: POS Setup >> >> >> I am having trouble figuring out the "step by step" process to deploy >> POS with synchronization. >> >> First area of clarification - How do I get the various pieces deployed >> and talking to each other? I have reviewed all the documentation I can >> find, and also the related config files. Here is what I understand so >> far: >> 1) Setup all the necessary entities (stores, facilities, products, >> pricing, etc.) >> 2) Create POS sync settings to define what entities will be synced >> (example PosSyncSetting.xml) >> 3) Define terminals per example DemoRetail.xml >> 4) Set entity-sync-rmi in serviceengine.xml file >> 5) Schedule the sync service >> >> So where do I do each of these? Master server, per store server, pos, >> all of the above? For example, if I have a configuration of one store, >> one pos terminal in the store, and one central server I want the flow >> to be: >> Push product, pricing, etc from central server down to POS terminal: >> MCS -> PSS -> POS >> >> Pull transactions from POS terminal to MCS: >> POS -> PSS -> MCS >> >> So let's start with the central server as the majority of setup will >> occur here. The main question I have about the central server is, how >> does it know where to "Push"? There is only one setting in >> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >> per store servers? Or do I misunderstand the use of "PUSH" in the config >> file? Is everything really "Pull?" So we just point each deployment to >> the server where it should communicate? For example the POS terminal >> would always be configured to talk to the PSS, PSS to MCS? >> >> Is it necessary to use a PSS, or can we go straight from POS->MCS? >> >> And for those of you also trying to come up to speed on POS, here is the >> glossary: >> MCS = Main Central Server >> PSS = Per Store Server >> POS = Point of Sale >> -- >> Vince Clark >> Global Era >> The freedom of open source. >> (303) 493-6723 >> (303) 455-2409 fax >> [hidden email] <mailto:[hidden email]> >> www.globalera.com >> -- Vince Clark Global Era The freedom of open source. (303) 493-6723 (303) 455-2409 fax [hidden email] <mailto:[hidden email]> www.globalera.com |
Check out EntityScheduledServices.xml, noting the targetServiceName in the EntitySync record. That is the service called to send stuff remotely, and if you look at it you'll see it uses the remote Service Engine to Service Engine calling mechanisms. -David Vince Clark wrote: > Skip and David. Thanks for responding quickly to my post. I definitely > need to use entity synchronization, not database replication. > > We're under the gun to deliver a proof of concept this week. I know the > entity sync works, or at least I trust that it does. I am going thru the > exercise of reverse engineering how it works based on a demo install. > The demo data sets up all necessary entities like stores and terminals. > But there is no default configuration for synchronization. I would > expect this, as host names would change on a case by case basis. So I > would not expect a default config. Unfortunately that makes it difficult > to understand how to set up entity sync by example. > > Any hints, links, etc. that could speed up the learning curve would be > greatly appreciated. > > David E Jones wrote: >> Just a quick note on this: the entity sync stuff is different from >> database replication as it has different configs for different servers >> so only the relevant data is needed. A good db level replication tool >> could probably do something similar, but you would miss some EECA >> rules that OFBiz runs based on data moving around and stuff like that. >> >> -David >> >> >> Skip wrote: >>> Vince >>> >>> I have been looking at this myself and was turned onto EnterpriseDB >>> which >>> has a nice replication server. I want all my stores using the same >>> central >>> database and the local database only when the internet breaks. >>> EnterpriseDB's replication server works for that. Somewhat costly, >>> but not >>> nearly as bad as Oracle. >>> >>> Just gotta add (maybe it's already there?) some failover logic. >>> >>> Skip >>> >>> -----Original Message----- >>> From: Vince Clark [mailto:[hidden email]] >>> Sent: Tuesday, September 18, 2007 2:49 PM >>> To: [hidden email] >>> Subject: POS Setup >>> >>> >>> I am having trouble figuring out the "step by step" process to deploy >>> POS with synchronization. >>> >>> First area of clarification - How do I get the various pieces deployed >>> and talking to each other? I have reviewed all the documentation I can >>> find, and also the related config files. Here is what I understand so >>> far: >>> 1) Setup all the necessary entities (stores, facilities, products, >>> pricing, etc.) >>> 2) Create POS sync settings to define what entities will be synced >>> (example PosSyncSetting.xml) >>> 3) Define terminals per example DemoRetail.xml >>> 4) Set entity-sync-rmi in serviceengine.xml file >>> 5) Schedule the sync service >>> >>> So where do I do each of these? Master server, per store server, pos, >>> all of the above? For example, if I have a configuration of one store, >>> one pos terminal in the store, and one central server I want the flow >>> to be: >>> Push product, pricing, etc from central server down to POS terminal: >>> MCS -> PSS -> POS >>> >>> Pull transactions from POS terminal to MCS: >>> POS -> PSS -> MCS >>> >>> So let's start with the central server as the majority of setup will >>> occur here. The main question I have about the central server is, how >>> does it know where to "Push"? There is only one setting in >>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>> file? Is everything really "Pull?" So we just point each deployment to >>> the server where it should communicate? For example the POS terminal >>> would always be configured to talk to the PSS, PSS to MCS? >>> >>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>> >>> And for those of you also trying to come up to speed on POS, here is the >>> glossary: >>> MCS = Main Central Server >>> PSS = Per Store Server >>> POS = Point of Sale >>> -- >>> Vince Clark >>> Global Era >>> The freedom of open source. >>> (303) 493-6723 >>> (303) 455-2409 fax >>> [hidden email] <mailto:[hidden email]> >>> www.globalera.com >>> > |
In reply to this post by BJ Freeman
Am I making this too complicated? I just need to understand how the OOTB
entity sync works. Nothing custom. The documentation states pretty clearly that it does work, although my summary of the steps left out much detail. That is what I am trying to fill in. More simply put: How do I make a POS terminal communicate with a store server How do I make a store server communicate with a central server And back down the stack from central server to POS terminal Since my original post I have been reviewing the example PosSyncSettings.xml file. I don't see anything in this file that specifies a host name. So I assume the only place to tell an instance what server to talk to is in the serviceengine.xml file. I will also review the entity related training videos. Unfortunately I don't have much time for learning curve on this effort. BJ Freeman wrote: > There is a lot more to this than you have described. > there is no defined way to do what you have describe, to my knowledge. > then again, someone may have slipped it in with out my knowing > > when I proposed this sometime ago, I left the actual way to communicate > open. > > All the services that were used to communicate called one service that > was the actual service for sending the data to the next level. up down > or both. so I plugged in the communications to update services that were > already in place, and added updates for the stuff updates services I added. > > I opted, since I already use ssl xml communications from other stores, > to keep that form of communications between levels. I use different > URL's for the different functions as a way to put them thru the > controller and into the events. > > Since then I have defined two communications 1)non urgent updates 2) > real time updates. Real time updates for things like pos transactions so > the product is put in reserve till the pos sale is complete then an > order is completed. this reduces problems with out of stock. > Using the same code for holding a item but a type is added to "holding > for POS". also the inventory updates are realtime both directions. so > far have not run into overlap, but I believe with a big enough system, > that will happen. > Non urgent are for stock reorder and transfers. > > for the purist I assume they will opted for SOAP or XMLRPC. > > Since stores can be defined at each location and the prefix to the order > can be unique the only consideration is the key size at the top level so > it can keep all the orders for all the stores. > I can see the key size needing to be increased considerable in a large > system, for order entity. > > so each POS is a mini store > so you have Store(ID)POS(id) as a prefix to the top level. > and POS(id) to identify which POS terminal it came from at the store > level. so you can see that Key for the orders can be large for a > national chain. > > at the top level I use facilities to define the stores and this is where > the communication is setup to the lower level. > > I am still working on the code that initializes a new store and new POS > in the store from the upper levels. > > > > > > > Vince Clark sent the following on 9/18/2007 2:49 PM: > >> I am having trouble figuring out the "step by step" process to deploy >> POS with synchronization. >> >> First area of clarification - How do I get the various pieces deployed >> and talking to each other? I have reviewed all the documentation I can >> find, and also the related config files. Here is what I understand so far: >> 1) Setup all the necessary entities (stores, facilities, products, >> pricing, etc.) >> 2) Create POS sync settings to define what entities will be synced >> (example PosSyncSetting.xml) >> 3) Define terminals per example DemoRetail.xml >> 4) Set entity-sync-rmi in serviceengine.xml file >> 5) Schedule the sync service >> >> So where do I do each of these? Master server, per store server, pos, >> all of the above? For example, if I have a configuration of one store, >> one pos terminal in the store, and one central server I want the flow to be: >> Push product, pricing, etc from central server down to POS terminal: >> MCS -> PSS -> POS >> >> Pull transactions from POS terminal to MCS: >> POS -> PSS -> MCS >> >> So let's start with the central server as the majority of setup will >> occur here. The main question I have about the central server is, how >> does it know where to "Push"? There is only one setting in >> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >> per store servers? Or do I misunderstand the use of "PUSH" in the config >> file? Is everything really "Pull?" So we just point each deployment to >> the server where it should communicate? For example the POS terminal >> would always be configured to talk to the PSS, PSS to MCS? >> >> Is it necessary to use a PSS, or can we go straight from POS->MCS? >> >> And for those of you also trying to come up to speed on POS, here is the >> glossary: >> MCS = Main Central Server >> PSS = Per Store Server >> POS = Point of Sale >> -- Vince Clark Global Era The freedom of open source. (303) 493-6723 (303) 455-2409 fax [hidden email] <mailto:[hidden email]> www.globalera.com |
if you following what david has proposed, forget what i said.
Vince Clark sent the following on 9/18/2007 4:50 PM: > Am I making this too complicated? I just need to understand how the OOTB > entity sync works. Nothing custom. The documentation states pretty > clearly that it does work, although my summary of the steps left out > much detail. That is what I am trying to fill in. > > More simply put: > How do I make a POS terminal communicate with a store server > How do I make a store server communicate with a central server > And back down the stack from central server to POS terminal > > Since my original post I have been reviewing the example > PosSyncSettings.xml file. I don't see anything in this file that > specifies a host name. So I assume the only place to tell an instance > what server to talk to is in the serviceengine.xml file. > > I will also review the entity related training videos. Unfortunately I > don't have much time for learning curve on this effort. > > BJ Freeman wrote: >> There is a lot more to this than you have described. >> there is no defined way to do what you have describe, to my knowledge. >> then again, someone may have slipped it in with out my knowing >> >> when I proposed this sometime ago, I left the actual way to communicate >> open. >> >> All the services that were used to communicate called one service that >> was the actual service for sending the data to the next level. up down >> or both. so I plugged in the communications to update services that were >> already in place, and added updates for the stuff updates services I added. >> >> I opted, since I already use ssl xml communications from other stores, >> to keep that form of communications between levels. I use different >> URL's for the different functions as a way to put them thru the >> controller and into the events. >> >> Since then I have defined two communications 1)non urgent updates 2) >> real time updates. Real time updates for things like pos transactions so >> the product is put in reserve till the pos sale is complete then an >> order is completed. this reduces problems with out of stock. >> Using the same code for holding a item but a type is added to "holding >> for POS". also the inventory updates are realtime both directions. so >> far have not run into overlap, but I believe with a big enough system, >> that will happen. >> Non urgent are for stock reorder and transfers. >> >> for the purist I assume they will opted for SOAP or XMLRPC. >> >> Since stores can be defined at each location and the prefix to the order >> can be unique the only consideration is the key size at the top level so >> it can keep all the orders for all the stores. >> I can see the key size needing to be increased considerable in a large >> system, for order entity. >> >> so each POS is a mini store >> so you have Store(ID)POS(id) as a prefix to the top level. >> and POS(id) to identify which POS terminal it came from at the store >> level. so you can see that Key for the orders can be large for a >> national chain. >> >> at the top level I use facilities to define the stores and this is where >> the communication is setup to the lower level. >> >> I am still working on the code that initializes a new store and new POS >> in the store from the upper levels. >> >> >> >> >> >> >> Vince Clark sent the following on 9/18/2007 2:49 PM: >> >>> I am having trouble figuring out the "step by step" process to deploy >>> POS with synchronization. >>> >>> First area of clarification - How do I get the various pieces deployed >>> and talking to each other? I have reviewed all the documentation I can >>> find, and also the related config files. Here is what I understand so far: >>> 1) Setup all the necessary entities (stores, facilities, products, >>> pricing, etc.) >>> 2) Create POS sync settings to define what entities will be synced >>> (example PosSyncSetting.xml) >>> 3) Define terminals per example DemoRetail.xml >>> 4) Set entity-sync-rmi in serviceengine.xml file >>> 5) Schedule the sync service >>> >>> So where do I do each of these? Master server, per store server, pos, >>> all of the above? For example, if I have a configuration of one store, >>> one pos terminal in the store, and one central server I want the flow to be: >>> Push product, pricing, etc from central server down to POS terminal: >>> MCS -> PSS -> POS >>> >>> Pull transactions from POS terminal to MCS: >>> POS -> PSS -> MCS >>> >>> So let's start with the central server as the majority of setup will >>> occur here. The main question I have about the central server is, how >>> does it know where to "Push"? There is only one setting in >>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>> file? Is everything really "Pull?" So we just point each deployment to >>> the server where it should communicate? For example the POS terminal >>> would always be configured to talk to the PSS, PSS to MCS? >>> >>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>> >>> And for those of you also trying to come up to speed on POS, here is the >>> glossary: >>> MCS = Main Central Server >>> PSS = Per Store Server >>> POS = Point of Sale >>> > |
In reply to this post by David E Jones
Hmmm, I wonder if I am missing something here that I assumed was correct.
Lets say you have 5 stores, each with 5 POS stations. Once of the 5 stores is the "Home Office" with a central data store. I am assuming that the 5 POS stations are configured to talk to the same local database connection, and a 6th instance (the back office) is doing the synchronization with the "Home Office". Is this not correct? I am heading now to dig into this code to see just how it works. Skip -----Original Message----- From: David E Jones [mailto:[hidden email]] Sent: Tuesday, September 18, 2007 4:45 PM To: [hidden email] Subject: Re: POS Setup Check out EntityScheduledServices.xml, noting the targetServiceName in the EntitySync record. That is the service called to send stuff remotely, and if you look at it you'll see it uses the remote Service Engine to Service Engine calling mechanisms. -David Vince Clark wrote: > Skip and David. Thanks for responding quickly to my post. I definitely > need to use entity synchronization, not database replication. > > We're under the gun to deliver a proof of concept this week. I know the > entity sync works, or at least I trust that it does. I am going thru the > exercise of reverse engineering how it works based on a demo install. > The demo data sets up all necessary entities like stores and terminals. > But there is no default configuration for synchronization. I would > expect this, as host names would change on a case by case basis. So I > would not expect a default config. Unfortunately that makes it difficult > to understand how to set up entity sync by example. > > Any hints, links, etc. that could speed up the learning curve would be > greatly appreciated. > > David E Jones wrote: >> Just a quick note on this: the entity sync stuff is different from >> database replication as it has different configs for different servers >> so only the relevant data is needed. A good db level replication tool >> could probably do something similar, but you would miss some EECA >> rules that OFBiz runs based on data moving around and stuff like that. >> >> -David >> >> >> Skip wrote: >>> Vince >>> >>> I have been looking at this myself and was turned onto EnterpriseDB >>> which >>> has a nice replication server. I want all my stores using the same >>> central >>> database and the local database only when the internet breaks. >>> EnterpriseDB's replication server works for that. Somewhat costly, >>> but not >>> nearly as bad as Oracle. >>> >>> Just gotta add (maybe it's already there?) some failover logic. >>> >>> Skip >>> >>> -----Original Message----- >>> From: Vince Clark [mailto:[hidden email]] >>> Sent: Tuesday, September 18, 2007 2:49 PM >>> To: [hidden email] >>> Subject: POS Setup >>> >>> >>> I am having trouble figuring out the "step by step" process to deploy >>> POS with synchronization. >>> >>> First area of clarification - How do I get the various pieces deployed >>> and talking to each other? I have reviewed all the documentation I can >>> find, and also the related config files. Here is what I understand so >>> far: >>> 1) Setup all the necessary entities (stores, facilities, products, >>> pricing, etc.) >>> 2) Create POS sync settings to define what entities will be synced >>> (example PosSyncSetting.xml) >>> 3) Define terminals per example DemoRetail.xml >>> 4) Set entity-sync-rmi in serviceengine.xml file >>> 5) Schedule the sync service >>> >>> So where do I do each of these? Master server, per store server, pos, >>> all of the above? For example, if I have a configuration of one store, >>> one pos terminal in the store, and one central server I want the flow >>> to be: >>> Push product, pricing, etc from central server down to POS terminal: >>> MCS -> PSS -> POS >>> >>> Pull transactions from POS terminal to MCS: >>> POS -> PSS -> MCS >>> >>> So let's start with the central server as the majority of setup will >>> occur here. The main question I have about the central server is, how >>> does it know where to "Push"? There is only one setting in >>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>> file? Is everything really "Pull?" So we just point each deployment to >>> the server where it should communicate? For example the POS terminal >>> would always be configured to talk to the PSS, PSS to MCS? >>> >>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>> >>> And for those of you also trying to come up to speed on POS, here is the >>> glossary: >>> MCS = Main Central Server >>> PSS = Per Store Server >>> POS = Point of Sale >>> -- >>> Vince Clark >>> Global Era >>> The freedom of open source. >>> (303) 493-6723 >>> (303) 455-2409 fax >>> [hidden email] <mailto:[hidden email]> >>> www.globalera.com >>> > |
here is a scenario for you to consider
a person put a transaction on POS on hold say they needed to go get their wallet out of the car. now they come back and are at a different register to recall the transaction and pay for it. the next is someone puts something on layaway. then they come to a different store to pay for it. where is the transaction stored to so all stores POS terminals can recall it. there are real world POS transactions. Skip sent the following on 9/18/2007 5:20 PM: > Hmmm, I wonder if I am missing something here that I assumed was correct. > Lets say you have 5 stores, each with 5 POS stations. > > Once of the 5 stores is the "Home Office" with a central data store. > > I am assuming that the 5 POS stations are configured to talk to the same > local database connection, and a 6th instance (the back office) is doing the > synchronization with the "Home Office". Is this not correct? > > I am heading now to dig into this code to see just how it works. > > Skip > > -----Original Message----- > From: David E Jones [mailto:[hidden email]] > Sent: Tuesday, September 18, 2007 4:45 PM > To: [hidden email] > Subject: Re: POS Setup > > > > Check out EntityScheduledServices.xml, noting the targetServiceName in the > EntitySync record. That is the service called to send stuff remotely, and if > you look at it you'll see it uses the remote Service Engine to Service > Engine calling mechanisms. > > -David > > > Vince Clark wrote: >> Skip and David. Thanks for responding quickly to my post. I definitely >> need to use entity synchronization, not database replication. >> >> We're under the gun to deliver a proof of concept this week. I know the >> entity sync works, or at least I trust that it does. I am going thru the >> exercise of reverse engineering how it works based on a demo install. >> The demo data sets up all necessary entities like stores and terminals. >> But there is no default configuration for synchronization. I would >> expect this, as host names would change on a case by case basis. So I >> would not expect a default config. Unfortunately that makes it difficult >> to understand how to set up entity sync by example. >> >> Any hints, links, etc. that could speed up the learning curve would be >> greatly appreciated. >> >> David E Jones wrote: >>> Just a quick note on this: the entity sync stuff is different from >>> database replication as it has different configs for different servers >>> so only the relevant data is needed. A good db level replication tool >>> could probably do something similar, but you would miss some EECA >>> rules that OFBiz runs based on data moving around and stuff like that. >>> >>> -David >>> >>> >>> Skip wrote: >>>> Vince >>>> >>>> I have been looking at this myself and was turned onto EnterpriseDB >>>> which >>>> has a nice replication server. I want all my stores using the same >>>> central >>>> database and the local database only when the internet breaks. >>>> EnterpriseDB's replication server works for that. Somewhat costly, >>>> but not >>>> nearly as bad as Oracle. >>>> >>>> Just gotta add (maybe it's already there?) some failover logic. >>>> >>>> Skip >>>> >>>> -----Original Message----- >>>> From: Vince Clark [mailto:[hidden email]] >>>> Sent: Tuesday, September 18, 2007 2:49 PM >>>> To: [hidden email] >>>> Subject: POS Setup >>>> >>>> >>>> I am having trouble figuring out the "step by step" process to deploy >>>> POS with synchronization. >>>> >>>> First area of clarification - How do I get the various pieces deployed >>>> and talking to each other? I have reviewed all the documentation I can >>>> find, and also the related config files. Here is what I understand so >>>> far: >>>> 1) Setup all the necessary entities (stores, facilities, products, >>>> pricing, etc.) >>>> 2) Create POS sync settings to define what entities will be synced >>>> (example PosSyncSetting.xml) >>>> 3) Define terminals per example DemoRetail.xml >>>> 4) Set entity-sync-rmi in serviceengine.xml file >>>> 5) Schedule the sync service >>>> >>>> So where do I do each of these? Master server, per store server, pos, >>>> all of the above? For example, if I have a configuration of one store, >>>> one pos terminal in the store, and one central server I want the flow >>>> to be: >>>> Push product, pricing, etc from central server down to POS terminal: >>>> MCS -> PSS -> POS >>>> >>>> Pull transactions from POS terminal to MCS: >>>> POS -> PSS -> MCS >>>> >>>> So let's start with the central server as the majority of setup will >>>> occur here. The main question I have about the central server is, how >>>> does it know where to "Push"? There is only one setting in >>>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>>> file? Is everything really "Pull?" So we just point each deployment to >>>> the server where it should communicate? For example the POS terminal >>>> would always be configured to talk to the PSS, PSS to MCS? >>>> >>>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>>> >>>> And for those of you also trying to come up to speed on POS, here is the >>>> glossary: >>>> MCS = Main Central Server >>>> PSS = Per Store Server >>>> POS = Point of Sale >>>> -- >>>> Vince Clark >>>> Global Era >>>> The freedom of open source. >>>> (303) 493-6723 >>>> (303) 455-2409 fax >>>> [hidden email] <mailto:[hidden email]> >>>> www.globalera.com >>>> > > > > |
In reply to this post by SkipDever
the POS transaction is a session.delegator.
so what ever is set in the entityengine.xml is what POS is connected to. this is usually a local DB on which the POS is running. Skip sent the following on 9/18/2007 5:20 PM: > Hmmm, I wonder if I am missing something here that I assumed was correct. > Lets say you have 5 stores, each with 5 POS stations. > > Once of the 5 stores is the "Home Office" with a central data store. > > I am assuming that the 5 POS stations are configured to talk to the same > local database connection, and a 6th instance (the back office) is doing the > synchronization with the "Home Office". Is this not correct? > > I am heading now to dig into this code to see just how it works. > > Skip > > -----Original Message----- > From: David E Jones [mailto:[hidden email]] > Sent: Tuesday, September 18, 2007 4:45 PM > To: [hidden email] > Subject: Re: POS Setup > > > > Check out EntityScheduledServices.xml, noting the targetServiceName in the > EntitySync record. That is the service called to send stuff remotely, and if > you look at it you'll see it uses the remote Service Engine to Service > Engine calling mechanisms. > > -David > > > Vince Clark wrote: >> Skip and David. Thanks for responding quickly to my post. I definitely >> need to use entity synchronization, not database replication. >> >> We're under the gun to deliver a proof of concept this week. I know the >> entity sync works, or at least I trust that it does. I am going thru the >> exercise of reverse engineering how it works based on a demo install. >> The demo data sets up all necessary entities like stores and terminals. >> But there is no default configuration for synchronization. I would >> expect this, as host names would change on a case by case basis. So I >> would not expect a default config. Unfortunately that makes it difficult >> to understand how to set up entity sync by example. >> >> Any hints, links, etc. that could speed up the learning curve would be >> greatly appreciated. >> >> David E Jones wrote: >>> Just a quick note on this: the entity sync stuff is different from >>> database replication as it has different configs for different servers >>> so only the relevant data is needed. A good db level replication tool >>> could probably do something similar, but you would miss some EECA >>> rules that OFBiz runs based on data moving around and stuff like that. >>> >>> -David >>> >>> >>> Skip wrote: >>>> Vince >>>> >>>> I have been looking at this myself and was turned onto EnterpriseDB >>>> which >>>> has a nice replication server. I want all my stores using the same >>>> central >>>> database and the local database only when the internet breaks. >>>> EnterpriseDB's replication server works for that. Somewhat costly, >>>> but not >>>> nearly as bad as Oracle. >>>> >>>> Just gotta add (maybe it's already there?) some failover logic. >>>> >>>> Skip >>>> >>>> -----Original Message----- >>>> From: Vince Clark [mailto:[hidden email]] >>>> Sent: Tuesday, September 18, 2007 2:49 PM >>>> To: [hidden email] >>>> Subject: POS Setup >>>> >>>> >>>> I am having trouble figuring out the "step by step" process to deploy >>>> POS with synchronization. >>>> >>>> First area of clarification - How do I get the various pieces deployed >>>> and talking to each other? I have reviewed all the documentation I can >>>> find, and also the related config files. Here is what I understand so >>>> far: >>>> 1) Setup all the necessary entities (stores, facilities, products, >>>> pricing, etc.) >>>> 2) Create POS sync settings to define what entities will be synced >>>> (example PosSyncSetting.xml) >>>> 3) Define terminals per example DemoRetail.xml >>>> 4) Set entity-sync-rmi in serviceengine.xml file >>>> 5) Schedule the sync service >>>> >>>> So where do I do each of these? Master server, per store server, pos, >>>> all of the above? For example, if I have a configuration of one store, >>>> one pos terminal in the store, and one central server I want the flow >>>> to be: >>>> Push product, pricing, etc from central server down to POS terminal: >>>> MCS -> PSS -> POS >>>> >>>> Pull transactions from POS terminal to MCS: >>>> POS -> PSS -> MCS >>>> >>>> So let's start with the central server as the majority of setup will >>>> occur here. The main question I have about the central server is, how >>>> does it know where to "Push"? There is only one setting in >>>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>>> file? Is everything really "Pull?" So we just point each deployment to >>>> the server where it should communicate? For example the POS terminal >>>> would always be configured to talk to the PSS, PSS to MCS? >>>> >>>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>>> >>>> And for those of you also trying to come up to speed on POS, here is the >>>> glossary: >>>> MCS = Main Central Server >>>> PSS = Per Store Server >>>> POS = Point of Sale >>>> -- >>>> Vince Clark >>>> Global Era >>>> The freedom of open source. >>>> (303) 493-6723 >>>> (303) 455-2409 fax >>>> [hidden email] <mailto:[hidden email]> >>>> www.globalera.com >>>> > > > > |
I am having problems with XUI for complex nested layouts. If the layout is
simple (mostly flat) everything works fine. But, with multiply nested border layout containers, it screws up (for me). I prototyped the thing in Netbeans in an hour, then copied the dimensions into an XUI project, so I am sure they are all right. Here is a snippet of the XUI code: <XPage next="checkout" layout="Border"> <Layout hgap="0" vgap="0"/> <Components> <Panel name="centerPanel" constraint="Center" border="0" layout="Border"> <Panel name="centerTopPanel" h="200" constraint="North" opaque="true" border="1" layout="Grid"> <Layout hgap="0" vgap="0" rows="1" columns="2" /> <Panel name="centerTopLeftPanel" style="prompt" w="352" h="200" opaque="true" border="1"> ... </Panel> <Panel name="centerTopRightPanel" style="prompt" w="352" h="200" opaque="true" border="1" layout="Border"> ... </Panel> </Panel> <Panel name="centerCenterPanel" h="300" constraint="Center" opaque="false" border="1"> ... </Panel> ... </Panel> <Panel name="southPanel" w="1024" h="40" constraint="South" opaque="false" border="0"> ... </Panel> <Panel name="westPanel" w="320" h="636" constraint="West" border="1" layout="Grid"> ... </Panel> </Panel> (What I am doing with all this is essentially duplicating the layout of the Orders-Order Entry screen.) This displays "sorta" ok (so long as I don't change anything) in the GUI editor, but when I run it, the "centerPanel" at the top has nothing in it. I tried this with only dimensions in the "westPanel" and no dimensions anywhere else, as well as explicit and carefully calculated dimensions for all. Nothing has worked. I now have four days screwing with this (just trying to layout the containers) and I am ready to give it up and hand code it in Java (which will take a couple hours at most), but I'd really like to do it in XUI for compatibility reasons. I have tried both using the GUI editor (Netbeans and Eclipse flavors) and hand coding the XML. No joy with either method. I have tried 2.06. 2.07 and the 3.0 versions. Anyone have a hint or two? I would especially like to find some documentation of the XML property definitions. Skip |
Your best bet would be to try the lists/forums at XUI, I doubt you'll find
much specialist knowledge on the subject here. Regards Scott On 20/09/2007, skip@theDevers <[hidden email]> wrote: > > I am having problems with XUI for complex nested layouts. If the layout > is > simple (mostly flat) everything works fine. But, with multiply nested > border layout containers, it screws up (for me). > > I prototyped the thing in Netbeans in an hour, then copied the dimensions > into an XUI project, so I am sure they are all right. > > Here is a snippet of the XUI code: > > <XPage next="checkout" layout="Border"> > <Layout hgap="0" vgap="0"/> > <Components> > <Panel name="centerPanel" constraint="Center" border="0" > layout="Border"> > <Panel name="centerTopPanel" h="200" constraint="North" > opaque="true" > border="1" layout="Grid"> > <Layout hgap="0" vgap="0" rows="1" columns="2" /> > <Panel name="centerTopLeftPanel" style="prompt" w="352" h="200" > opaque="true" border="1"> > ... > </Panel> > <Panel name="centerTopRightPanel" style="prompt" w="352" h="200" > opaque="true" border="1" layout="Border"> > ... > </Panel> > </Panel> > <Panel name="centerCenterPanel" h="300" constraint="Center" > opaque="false" > border="1"> > ... > </Panel> > ... > </Panel> > <Panel name="southPanel" w="1024" h="40" constraint="South" > opaque="false" border="0"> > ... > </Panel> > <Panel name="westPanel" w="320" h="636" constraint="West" border="1" > layout="Grid"> > ... > </Panel> > </Panel> > > (What I am doing with all this is essentially duplicating the layout of > the > Orders-Order Entry screen.) > > This displays "sorta" ok (so long as I don't change anything) in the GUI > editor, but when I run it, the "centerPanel" at the top has nothing in > it. > > I tried this with only dimensions in the "westPanel" and no dimensions > anywhere else, as well as explicit and carefully calculated dimensions for > all. Nothing has worked. > > I now have four days screwing with this (just trying to layout the > containers) and I am ready to give it up and hand code it in Java (which > will take a couple hours at most), but I'd really like to do it in XUI for > compatibility reasons. > > I have tried both using the GUI editor (Netbeans and Eclipse flavors) and > hand coding the XML. No joy with either method. > > I have tried 2.06. 2.07 and the 3.0 versions. > > Anyone have a hint or two? I would especially like to find some > documentation of the XML property definitions. > > Skip > > |
In reply to this post by BJ Freeman
Can anyone tell me if any of the findBy methods using primary keys will
return matching records when only the first N bytes match? For example, we have lots of GZ-xxxx in the demo Product table. Are there any findBy methods that will return all if I do something like List m = findByxxx("Product", UtilMisc.toMap("productId", "GZ"); I expect findByLike will do it, but I didnt want to do a "like" search where I might bet back "AmGZ123" and similiar. I want to get back only records starting with GZ. I can dig through the source, but I was hoping some of the more experienced folks could save me the trouble as I can't find documentation on it. Skip |
Use the % wildcard
List m = findByLike("Product", UtilMisc.toMap("productId", "GZ%"); or you can use findByAnd with a list of expressions, there are plenty of examples in the code to work from. Regards Scott On 21/09/2007, skip@theDevers <[hidden email]> wrote: > > Can anyone tell me if any of the findBy methods using primary keys will > return matching records when only the first N bytes match? > > For example, we have lots of GZ-xxxx in the demo Product table. Are there > any findBy methods that will return all if I do something like > > List m = findByxxx("Product", UtilMisc.toMap("productId", "GZ"); > > I expect findByLike will do it, but I didnt want to do a "like" search > where > I might bet back "AmGZ123" and similiar. I want to get back only records > starting with GZ. > > I can dig through the source, but I was hoping some of the more > experienced > folks could save me the trouble as I can't find documentation on it. > > Skip > > |
In reply to this post by BJ Freeman
So, BJ, I have read this again and I wonder if you could clarify. You are
NOT using the ofbiz synchronization. Instead, you are using a custom XML transmit from the remote store to the central database with a special url and then getting xml back from the POST. Is this correct? I ask because I was considering something similiar only I was going to write a little module that lived in the server and opened another ssl port exclusively to process these XML queries from remote stores. Skip -----Original Message----- From: BJ Freeman [mailto:[hidden email]] Sent: Tuesday, September 18, 2007 4:53 PM To: [hidden email] Subject: Re: POS Setup- with tiers if you following what david has proposed, forget what i said. Vince Clark sent the following on 9/18/2007 4:50 PM: > Am I making this too complicated? I just need to understand how the OOTB > entity sync works. Nothing custom. The documentation states pretty > clearly that it does work, although my summary of the steps left out > much detail. That is what I am trying to fill in. > > More simply put: > How do I make a POS terminal communicate with a store server > How do I make a store server communicate with a central server > And back down the stack from central server to POS terminal > > Since my original post I have been reviewing the example > PosSyncSettings.xml file. I don't see anything in this file that > specifies a host name. So I assume the only place to tell an instance > what server to talk to is in the serviceengine.xml file. > > I will also review the entity related training videos. Unfortunately I > don't have much time for learning curve on this effort. > > BJ Freeman wrote: >> There is a lot more to this than you have described. >> there is no defined way to do what you have describe, to my knowledge. >> then again, someone may have slipped it in with out my knowing >> >> when I proposed this sometime ago, I left the actual way to communicate >> open. >> >> All the services that were used to communicate called one service that >> was the actual service for sending the data to the next level. up down >> or both. so I plugged in the communications to update services that were >> already in place, and added updates for the stuff updates services I >> >> I opted, since I already use ssl xml communications from other stores, >> to keep that form of communications between levels. I use different >> URL's for the different functions as a way to put them thru the >> controller and into the events. >> >> Since then I have defined two communications 1)non urgent updates 2) >> real time updates. Real time updates for things like pos transactions so >> the product is put in reserve till the pos sale is complete then an >> order is completed. this reduces problems with out of stock. >> Using the same code for holding a item but a type is added to "holding >> for POS". also the inventory updates are realtime both directions. so >> far have not run into overlap, but I believe with a big enough system, >> that will happen. >> Non urgent are for stock reorder and transfers. >> >> for the purist I assume they will opted for SOAP or XMLRPC. >> >> Since stores can be defined at each location and the prefix to the order >> can be unique the only consideration is the key size at the top level so >> it can keep all the orders for all the stores. >> I can see the key size needing to be increased considerable in a large >> system, for order entity. >> >> so each POS is a mini store >> so you have Store(ID)POS(id) as a prefix to the top level. >> and POS(id) to identify which POS terminal it came from at the store >> level. so you can see that Key for the orders can be large for a >> national chain. >> >> at the top level I use facilities to define the stores and this is where >> the communication is setup to the lower level. >> >> I am still working on the code that initializes a new store and new POS >> in the store from the upper levels. >> >> >> >> >> >> >> Vince Clark sent the following on 9/18/2007 2:49 PM: >> >>> I am having trouble figuring out the "step by step" process to deploy >>> POS with synchronization. >>> >>> First area of clarification - How do I get the various pieces deployed >>> and talking to each other? I have reviewed all the documentation I can >>> find, and also the related config files. Here is what I understand so >>> 1) Setup all the necessary entities (stores, facilities, products, >>> pricing, etc.) >>> 2) Create POS sync settings to define what entities will be synced >>> (example PosSyncSetting.xml) >>> 3) Define terminals per example DemoRetail.xml >>> 4) Set entity-sync-rmi in serviceengine.xml file >>> 5) Schedule the sync service >>> >>> So where do I do each of these? Master server, per store server, pos, >>> all of the above? For example, if I have a configuration of one store, >>> one pos terminal in the store, and one central server I want the flow to >>> Push product, pricing, etc from central server down to POS terminal: >>> MCS -> PSS -> POS >>> >>> Pull transactions from POS terminal to MCS: >>> POS -> PSS -> MCS >>> >>> So let's start with the central server as the majority of setup will >>> occur here. The main question I have about the central server is, how >>> does it know where to "Push"? There is only one setting in >>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>> file? Is everything really "Pull?" So we just point each deployment to >>> the server where it should communicate? For example the POS terminal >>> would always be configured to talk to the PSS, PSS to MCS? >>> >>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>> >>> And for those of you also trying to come up to speed on POS, here is the >>> glossary: >>> MCS = Main Central Server >>> PSS = Per Store Server >>> POS = Point of Sale >>> > |
The bigger scope is that I can Identify at the top Tier computer, the
transaction from the POS device in any store. Since this is done under https (ssl) the data is encrypted. The receive side is a event class that captures the xml transmitted, Identifies it saves it to a file with the Identity name. The reason is that it is the fastest way to capture and store a high volume of these. all the xml files that have the same structure go to the same URL. A service then reads the XML files and processes them. then sends a Ack back to the sending tier. the orginal tier that send it then marks that message sent and recieved. I have added services that created the xml to be sent and sends them to a url. Currently have the URL in a property file that identifies the tiers it is to send its messages to. This is read every time a message is sent so tiers can be added on the fly. eventually make make it into the entities. the messages are kept in an entity till an Ack is received then if a flag is set it is deleted. The ones not deleted are audit trails to verify that all critical messages were in fact sent, Should an error arise in one of the tiers. I don't see a need to open an other port since it is the controller that is used to direct the messages. Skip sent the following on 9/24/2007 5:10 PM: > So, BJ, I have read this again and I wonder if you could clarify. You are > NOT using the ofbiz synchronization. Instead, you are using a custom XML > transmit from the remote store to the central database with a special url > and then getting xml back from the POST. > > Is this correct? I ask because I was considering something similiar only I > was going to write a little module that lived in the server and opened > another ssl port exclusively to process these XML queries from remote > stores. > > Skip > > -----Original Message----- > From: BJ Freeman [mailto:[hidden email]] > Sent: Tuesday, September 18, 2007 4:53 PM > To: [hidden email] > Subject: Re: POS Setup- with tiers > > > if you following what david has proposed, forget what i said. > > Vince Clark sent the following on 9/18/2007 4:50 PM: >> Am I making this too complicated? I just need to understand how the OOTB >> entity sync works. Nothing custom. The documentation states pretty >> clearly that it does work, although my summary of the steps left out >> much detail. That is what I am trying to fill in. >> >> More simply put: >> How do I make a POS terminal communicate with a store server >> How do I make a store server communicate with a central server >> And back down the stack from central server to POS terminal >> >> Since my original post I have been reviewing the example >> PosSyncSettings.xml file. I don't see anything in this file that >> specifies a host name. So I assume the only place to tell an instance >> what server to talk to is in the serviceengine.xml file. >> >> I will also review the entity related training videos. Unfortunately I >> don't have much time for learning curve on this effort. >> >> BJ Freeman wrote: >>> There is a lot more to this than you have described. >>> there is no defined way to do what you have describe, to my knowledge. >>> then again, someone may have slipped it in with out my knowing >>> >>> when I proposed this sometime ago, I left the actual way to communicate >>> open. >>> >>> All the services that were used to communicate called one service that >>> was the actual service for sending the data to the next level. up down >>> or both. so I plugged in the communications to update services that were >>> already in place, and added updates for the stuff updates services I > added. >>> I opted, since I already use ssl xml communications from other stores, >>> to keep that form of communications between levels. I use different >>> URL's for the different functions as a way to put them thru the >>> controller and into the events. >>> >>> Since then I have defined two communications 1)non urgent updates 2) >>> real time updates. Real time updates for things like pos transactions so >>> the product is put in reserve till the pos sale is complete then an >>> order is completed. this reduces problems with out of stock. >>> Using the same code for holding a item but a type is added to "holding >>> for POS". also the inventory updates are realtime both directions. so >>> far have not run into overlap, but I believe with a big enough system, >>> that will happen. >>> Non urgent are for stock reorder and transfers. >>> >>> for the purist I assume they will opted for SOAP or XMLRPC. >>> >>> Since stores can be defined at each location and the prefix to the order >>> can be unique the only consideration is the key size at the top level so >>> it can keep all the orders for all the stores. >>> I can see the key size needing to be increased considerable in a large >>> system, for order entity. >>> >>> so each POS is a mini store >>> so you have Store(ID)POS(id) as a prefix to the top level. >>> and POS(id) to identify which POS terminal it came from at the store >>> level. so you can see that Key for the orders can be large for a >>> national chain. >>> >>> at the top level I use facilities to define the stores and this is where >>> the communication is setup to the lower level. >>> >>> I am still working on the code that initializes a new store and new POS >>> in the store from the upper levels. >>> >>> >>> >>> >>> >>> >>> Vince Clark sent the following on 9/18/2007 2:49 PM: >>> >>>> I am having trouble figuring out the "step by step" process to deploy >>>> POS with synchronization. >>>> >>>> First area of clarification - How do I get the various pieces deployed >>>> and talking to each other? I have reviewed all the documentation I can >>>> find, and also the related config files. Here is what I understand so > far: >>>> 1) Setup all the necessary entities (stores, facilities, products, >>>> pricing, etc.) >>>> 2) Create POS sync settings to define what entities will be synced >>>> (example PosSyncSetting.xml) >>>> 3) Define terminals per example DemoRetail.xml >>>> 4) Set entity-sync-rmi in serviceengine.xml file >>>> 5) Schedule the sync service >>>> >>>> So where do I do each of these? Master server, per store server, pos, >>>> all of the above? For example, if I have a configuration of one store, >>>> one pos terminal in the store, and one central server I want the flow to > be: >>>> Push product, pricing, etc from central server down to POS terminal: >>>> MCS -> PSS -> POS >>>> >>>> Pull transactions from POS terminal to MCS: >>>> POS -> PSS -> MCS >>>> >>>> So let's start with the central server as the majority of setup will >>>> occur here. The main question I have about the central server is, how >>>> does it know where to "Push"? There is only one setting in >>>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>>> file? Is everything really "Pull?" So we just point each deployment to >>>> the server where it should communicate? For example the POS terminal >>>> would always be configured to talk to the PSS, PSS to MCS? >>>> >>>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>>> >>>> And for those of you also trying to come up to speed on POS, here is the >>>> glossary: >>>> MCS = Main Central Server >>>> PSS = Per Store Server >>>> POS = Point of Sale >>>> > > > > |
forgot yes using https post
the first ack is in the header on the return of the post to the originating server. the second ack is a separate message. BJ Freeman sent the following on 9/24/2007 7:41 PM: > The bigger scope is that I can Identify at the top Tier computer, the > transaction from the POS device in any store. > > Since this is done under https (ssl) the data is encrypted. > > The receive side is a event class that captures the xml transmitted, > Identifies it saves it to a file with the Identity name. > The reason is that it is the fastest way to capture and store a high > volume of these. all the xml files that have the same structure go to > the same URL. > A service then reads the XML files and processes them. > then sends a Ack back to the sending tier. > the orginal tier that send it then marks that message sent and recieved. > > > I have added services that created the xml to be sent and sends them to > a url. Currently have the URL in a property file that identifies the > tiers it is to send its messages to. This is read every time a message > is sent so tiers can be added on the fly. eventually make make it into > the entities. > the messages are kept in an entity till an Ack is received then if a > flag is set it is deleted. > The ones not deleted are audit trails to verify that all critical > messages were in fact sent, Should an error arise in one of the tiers. > > I don't see a need to open an other port since it is the controller that > is used to direct the messages. > > > > Skip sent the following on 9/24/2007 5:10 PM: >> So, BJ, I have read this again and I wonder if you could clarify. You are >> NOT using the ofbiz synchronization. Instead, you are using a custom XML >> transmit from the remote store to the central database with a special url >> and then getting xml back from the POST. >> >> Is this correct? I ask because I was considering something similiar only I >> was going to write a little module that lived in the server and opened >> another ssl port exclusively to process these XML queries from remote >> stores. >> >> Skip >> >> -----Original Message----- >> From: BJ Freeman [mailto:[hidden email]] >> Sent: Tuesday, September 18, 2007 4:53 PM >> To: [hidden email] >> Subject: Re: POS Setup- with tiers >> >> >> if you following what david has proposed, forget what i said. >> >> Vince Clark sent the following on 9/18/2007 4:50 PM: >>> Am I making this too complicated? I just need to understand how the OOTB >>> entity sync works. Nothing custom. The documentation states pretty >>> clearly that it does work, although my summary of the steps left out >>> much detail. That is what I am trying to fill in. >>> >>> More simply put: >>> How do I make a POS terminal communicate with a store server >>> How do I make a store server communicate with a central server >>> And back down the stack from central server to POS terminal >>> >>> Since my original post I have been reviewing the example >>> PosSyncSettings.xml file. I don't see anything in this file that >>> specifies a host name. So I assume the only place to tell an instance >>> what server to talk to is in the serviceengine.xml file. >>> >>> I will also review the entity related training videos. Unfortunately I >>> don't have much time for learning curve on this effort. >>> >>> BJ Freeman wrote: >>>> There is a lot more to this than you have described. >>>> there is no defined way to do what you have describe, to my knowledge. >>>> then again, someone may have slipped it in with out my knowing >>>> >>>> when I proposed this sometime ago, I left the actual way to communicate >>>> open. >>>> >>>> All the services that were used to communicate called one service that >>>> was the actual service for sending the data to the next level. up down >>>> or both. so I plugged in the communications to update services that were >>>> already in place, and added updates for the stuff updates services I >> added. >>>> I opted, since I already use ssl xml communications from other stores, >>>> to keep that form of communications between levels. I use different >>>> URL's for the different functions as a way to put them thru the >>>> controller and into the events. >>>> >>>> Since then I have defined two communications 1)non urgent updates 2) >>>> real time updates. Real time updates for things like pos transactions so >>>> the product is put in reserve till the pos sale is complete then an >>>> order is completed. this reduces problems with out of stock. >>>> Using the same code for holding a item but a type is added to "holding >>>> for POS". also the inventory updates are realtime both directions. so >>>> far have not run into overlap, but I believe with a big enough system, >>>> that will happen. >>>> Non urgent are for stock reorder and transfers. >>>> >>>> for the purist I assume they will opted for SOAP or XMLRPC. >>>> >>>> Since stores can be defined at each location and the prefix to the order >>>> can be unique the only consideration is the key size at the top level so >>>> it can keep all the orders for all the stores. >>>> I can see the key size needing to be increased considerable in a large >>>> system, for order entity. >>>> >>>> so each POS is a mini store >>>> so you have Store(ID)POS(id) as a prefix to the top level. >>>> and POS(id) to identify which POS terminal it came from at the store >>>> level. so you can see that Key for the orders can be large for a >>>> national chain. >>>> >>>> at the top level I use facilities to define the stores and this is where >>>> the communication is setup to the lower level. >>>> >>>> I am still working on the code that initializes a new store and new POS >>>> in the store from the upper levels. >>>> >>>> >>>> >>>> >>>> >>>> >>>> Vince Clark sent the following on 9/18/2007 2:49 PM: >>>> >>>>> I am having trouble figuring out the "step by step" process to deploy >>>>> POS with synchronization. >>>>> >>>>> First area of clarification - How do I get the various pieces deployed >>>>> and talking to each other? I have reviewed all the documentation I can >>>>> find, and also the related config files. Here is what I understand so >> far: >>>>> 1) Setup all the necessary entities (stores, facilities, products, >>>>> pricing, etc.) >>>>> 2) Create POS sync settings to define what entities will be synced >>>>> (example PosSyncSetting.xml) >>>>> 3) Define terminals per example DemoRetail.xml >>>>> 4) Set entity-sync-rmi in serviceengine.xml file >>>>> 5) Schedule the sync service >>>>> >>>>> So where do I do each of these? Master server, per store server, pos, >>>>> all of the above? For example, if I have a configuration of one store, >>>>> one pos terminal in the store, and one central server I want the flow to >> be: >>>>> Push product, pricing, etc from central server down to POS terminal: >>>>> MCS -> PSS -> POS >>>>> >>>>> Pull transactions from POS terminal to MCS: >>>>> POS -> PSS -> MCS >>>>> >>>>> So let's start with the central server as the majority of setup will >>>>> occur here. The main question I have about the central server is, how >>>>> does it know where to "Push"? There is only one setting in >>>>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>>>> per store servers? Or do I misunderstand the use of "PUSH" in the config >>>>> file? Is everything really "Pull?" So we just point each deployment to >>>>> the server where it should communicate? For example the POS terminal >>>>> would always be configured to talk to the PSS, PSS to MCS? >>>>> >>>>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>>>> >>>>> And for those of you also trying to come up to speed on POS, here is the >>>>> glossary: >>>>> MCS = Main Central Server >>>>> PSS = Per Store Server >>>>> POS = Point of Sale >>>>> >> >> >> > > > |
In reply to this post by BJ Freeman
Thank you sir for the clarification. The reason for using the direct port
is to avoid the http overhead (although I admit it is small). -----Original Message----- From: BJ Freeman [mailto:[hidden email]] Sent: Monday, September 24, 2007 7:41 PM To: [hidden email] Subject: Re: POS Setup- with tiers The bigger scope is that I can Identify at the top Tier computer, the transaction from the POS device in any store. Since this is done under https (ssl) the data is encrypted. The receive side is a event class that captures the xml transmitted, Identifies it saves it to a file with the Identity name. The reason is that it is the fastest way to capture and store a high volume of these. all the xml files that have the same structure go to the same URL. A service then reads the XML files and processes them. then sends a Ack back to the sending tier. the orginal tier that send it then marks that message sent and recieved. I have added services that created the xml to be sent and sends them to a url. Currently have the URL in a property file that identifies the tiers it is to send its messages to. This is read every time a message is sent so tiers can be added on the fly. eventually make make it into the entities. the messages are kept in an entity till an Ack is received then if a flag is set it is deleted. The ones not deleted are audit trails to verify that all critical messages were in fact sent, Should an error arise in one of the tiers. I don't see a need to open an other port since it is the controller that is used to direct the messages. Skip sent the following on 9/24/2007 5:10 PM: > So, BJ, I have read this again and I wonder if you could clarify. You are > NOT using the ofbiz synchronization. Instead, you are using a custom XML > transmit from the remote store to the central database with a special url > and then getting xml back from the POST. > > Is this correct? I ask because I was considering something similiar only I > was going to write a little module that lived in the server and opened > another ssl port exclusively to process these XML queries from remote > stores. > > Skip > > -----Original Message----- > From: BJ Freeman [mailto:[hidden email]] > Sent: Tuesday, September 18, 2007 4:53 PM > To: [hidden email] > Subject: Re: POS Setup- with tiers > > > if you following what david has proposed, forget what i said. > > Vince Clark sent the following on 9/18/2007 4:50 PM: >> Am I making this too complicated? I just need to understand how the OOTB >> entity sync works. Nothing custom. The documentation states pretty >> clearly that it does work, although my summary of the steps left out >> much detail. That is what I am trying to fill in. >> >> More simply put: >> How do I make a POS terminal communicate with a store server >> How do I make a store server communicate with a central server >> And back down the stack from central server to POS terminal >> >> Since my original post I have been reviewing the example >> PosSyncSettings.xml file. I don't see anything in this file that >> specifies a host name. So I assume the only place to tell an instance >> what server to talk to is in the serviceengine.xml file. >> >> I will also review the entity related training videos. Unfortunately I >> don't have much time for learning curve on this effort. >> >> BJ Freeman wrote: >>> There is a lot more to this than you have described. >>> there is no defined way to do what you have describe, to my knowledge. >>> then again, someone may have slipped it in with out my knowing >>> >>> when I proposed this sometime ago, I left the actual way to communicate >>> open. >>> >>> All the services that were used to communicate called one service that >>> was the actual service for sending the data to the next level. up down >>> or both. so I plugged in the communications to update services that were >>> already in place, and added updates for the stuff updates services I > added. >>> I opted, since I already use ssl xml communications from other stores, >>> to keep that form of communications between levels. I use different >>> URL's for the different functions as a way to put them thru the >>> controller and into the events. >>> >>> Since then I have defined two communications 1)non urgent updates 2) >>> real time updates. Real time updates for things like pos transactions so >>> the product is put in reserve till the pos sale is complete then an >>> order is completed. this reduces problems with out of stock. >>> Using the same code for holding a item but a type is added to "holding >>> for POS". also the inventory updates are realtime both directions. so >>> far have not run into overlap, but I believe with a big enough system, >>> that will happen. >>> Non urgent are for stock reorder and transfers. >>> >>> for the purist I assume they will opted for SOAP or XMLRPC. >>> >>> Since stores can be defined at each location and the prefix to the order >>> can be unique the only consideration is the key size at the top level so >>> it can keep all the orders for all the stores. >>> I can see the key size needing to be increased considerable in a large >>> system, for order entity. >>> >>> so each POS is a mini store >>> so you have Store(ID)POS(id) as a prefix to the top level. >>> and POS(id) to identify which POS terminal it came from at the store >>> level. so you can see that Key for the orders can be large for a >>> national chain. >>> >>> at the top level I use facilities to define the stores and this is where >>> the communication is setup to the lower level. >>> >>> I am still working on the code that initializes a new store and new POS >>> in the store from the upper levels. >>> >>> >>> >>> >>> >>> >>> Vince Clark sent the following on 9/18/2007 2:49 PM: >>> >>>> I am having trouble figuring out the "step by step" process to deploy >>>> POS with synchronization. >>>> >>>> First area of clarification - How do I get the various pieces deployed >>>> and talking to each other? I have reviewed all the documentation I can >>>> find, and also the related config files. Here is what I understand so > far: >>>> 1) Setup all the necessary entities (stores, facilities, products, >>>> pricing, etc.) >>>> 2) Create POS sync settings to define what entities will be synced >>>> (example PosSyncSetting.xml) >>>> 3) Define terminals per example DemoRetail.xml >>>> 4) Set entity-sync-rmi in serviceengine.xml file >>>> 5) Schedule the sync service >>>> >>>> So where do I do each of these? Master server, per store server, pos, >>>> all of the above? For example, if I have a configuration of one store, >>>> one pos terminal in the store, and one central server I want the flow > be: >>>> Push product, pricing, etc from central server down to POS terminal: >>>> MCS -> PSS -> POS >>>> >>>> Pull transactions from POS terminal to MCS: >>>> POS -> PSS -> MCS >>>> >>>> So let's start with the central server as the majority of setup will >>>> occur here. The main question I have about the central server is, how >>>> does it know where to "Push"? There is only one setting in >>>> serviceengine.xml for entity-sync-rmi. So how do I configure multiple >>>> per store servers? Or do I misunderstand the use of "PUSH" in the >>>> file? Is everything really "Pull?" So we just point each deployment to >>>> the server where it should communicate? For example the POS terminal >>>> would always be configured to talk to the PSS, PSS to MCS? >>>> >>>> Is it necessary to use a PSS, or can we go straight from POS->MCS? >>>> >>>> And for those of you also trying to come up to speed on POS, here is the >>>> glossary: >>>> MCS = Main Central Server >>>> PSS = Per Store Server >>>> POS = Point of Sale >>>> > > > > |
In reply to this post by BJ Freeman
I am in the final throws of writting a standalone Sales Order Entry
application written in pure Java (I gave up on XUI after pulling my hair out for a week with the complex panel structure). The proposed architecture looks like this (forgive the text based graphics): +---------------+ +-----------------+ | | | | | Web Apps | | Sales Order | | | | Java GUI | +-------+-------+ | | | +-----------------+ | | | | | Ofbiz Framework | Internet | | | +-----------------+ | | +---------------+ | | | | | Main Ofbiz | | | Server | | | | | +------+--------+ | | | +---Internal Network-----+ | +------+---------+ | | | Postgres Server| | | +----------------+ This is the same as the POS app (I even reused some of the same code) except that I did not use XUI. Each of the Sales Order Entry apps runs on desktops configured to talk to the same Postgres server using Ofbiz services, the same as the Ofbiz server (and POS client I think), and connected via the internal private network to the database server. These are built all at the same time, so any ECA rules, database structure changes, etc. are applied to all applications. A copy is then installed on each desktop running the SOE app. I intend to use the same architecture for a complicated EOQ purchasing system that I think will be too hard to do with a web app. As mentioned, this works. I have already partially implemented and tested it in a limited way, i.e. I can access the main server with a browser and see the sales I have made with the SOE app. I am worried that I might be missing something, especially when I have 11 of the SOE apps running at the same time. Can anyone offer any input? Is there something internal deep inside Ofbiz where all transactions need to go through a single entity engine instead of a dozen or so talking to the same database server? Are there synchronization issues I might be overlooking? I am aware that I will need to re-install the desktops if the server structure changes in any meaningful way. Skip |
Free forum by Nabble | Edit this page |