Ajey 

Not sure if it matters but in the serviceengine.xml file I only change the 
enity-sync-rmi, not the others. 

Below is a PosSyncSettings.xml file that includes fairly detailed notes on what 
to load where (POS vs. MCS) and in what order. Hope it helps. When I modified 
this file it was the same approach you are taking, a POS terminal and MCS with 
no per store servers. So it should be exactly what you are trying to do. 

I would also suggest that as you are going thru the learning process use a dev 
environment that you can wipe clean and start over many times if necessary. You 
will need to get used to how synchronization is triggered and it helps if you 
can clean out the sync settings on all machines (POS, PSS, MCS) and start over. 

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
Licensed to the Apache Software Foundation (ASF) under one 
or more contributor license agreements. See the NOTICE file 
distributed with this work for additional information 
regarding copyright ownership. The ASF licenses this file 
to you under the Apache License, Version 2.0 (the 
"License"); you may not use this file except in compliance 
with the License. You may obtain a copy of the License at 

http://www.apache.org/licenses/LICENSE-2.0 

Unless required by applicable law or agreed to in writing, 
software distributed under the License is distributed on an 
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
KIND, either express or implied. See the License for the 
specific language governing permissions and limitations 
under the License. 

2007-12-05 vclark Notes 
EntiyGroup 
EntityGroup and EntityGroupEntry records are only loaded on Master Central 
Server (MCS). 
When the "PULL" sync occurs those records are copied down to the POS terminal. 
This 
allows for changes to be made on MCS and propogate down to terminals. 
Both sets of EntityGroup records (5501 and 5506) are reused across terminals. 
No need 
to have separate EntityGroup records for each terminal. 

EntitySync (PULL) 
EntitySync record is loaded on MCS. 
entitySyncId must be unique for each terminal so we use the POS terminal ID. 

EntitySync (PUSH) 
EntitySync record is loaded on POS terminal. 
Can use the same enitySyncId since it is loaded on each terminal, not MCS. 

RecurrenceRule, RecurrenceInfo, RuntimeData 
Both of these sets of records are loaded on the POS terminal. This initiates 
PUSH and PULL transfers and these are always initiated from the terminals, not 
MCS. 

Step by Step Instructions 
1. Setup POS terminal with clean checkout from trunk 
2. In startofbiz.sh/bat set RMIIF to localhost (uncomment the line.) 
3. Create empty ofbiz database and populate with seed data (ant 
run-install-seed). Note that for testing/learning you can load demo data as 
well. For a production environment you will need to only load seed, then do all 
of your organization specific setup such as accounting, facilities, stores, 
etc. 
4. framework/service/config/serviceengine.xml - enity-sync-rmi set to MCS. 
5. Start POS terminal in standard mode (web interface) 
6. Load EntitySync record for PULL on MCS. 
7. Load XML on POS terminal to trigger PULL sync 
8. Load EntitySync PUSH on POS terminal. 
9. When pull is finished, load XML to trigger PUSH 
10. Shutdown OfBiz on POS terminal 
11. pos-containers.xml on POS client - set xui session id = <facilityId-pos 
terminal number> ex. 10020-1. 
12. pos-containers.xml on POS client - set faclility ID = <facilityId) ex. 
10020. 

--> 
<entity-engine-xml> 

<!-- MCS->POS Per Store Server to POS Terminal 
This data is loaded on the Master Central Server --> 
<EntityGroup entityGroupId="5501" entityGroupName="POS: Per Store Server to POS 
Terminal"/> 
<!-- these are used to update sync settings on the POS terminals from the 
central server --> 
<EntityGroupEntry entityGroupId="5501" entityOrPackage="org.ofbiz.entity.group" 
applEnumId="ESIA_INCLUDE"/> 
<!-- this is the general product information needed for pricing, promotions, 
basic product info, etc --> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.product" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.price" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.promo" applEnumId="ESIA_INCLUDE"/> 
<!-- org.ofbiz.product.category is needed for certain promotions, probably 
won't be used much for category browsing in the POS --> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.category" applEnumId="ESIA_INCLUDE"/> 
<!-- org.ofbiz.party.party may be needed for certain promotions --> 
<EntityGroupEntry entityGroupId="5501" entityOrPackage="org.ofbiz.party.party" 
applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.pos.PosTerminal" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.storage" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.store" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.accounting.tax" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.security.login" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.security.securitygroup" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.party.contact" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5501" 
entityOrPackage="org.ofbiz.product.inventory" applEnumId="ESIA_INCLUDE"/> 

<!-- POS->MCS Per Store Server to Central Server --> 
<EntityGroup entityGroupId="5506" entityGroupName="POS: Per Store Server to 
Central Server"/> 
<!-- org.ofbiz.party.party may be needed for order related information, like 
party roles or contact info etc --> 
<EntityGroupEntry entityGroupId="5506" entityOrPackage="org.ofbiz.party.party" 
applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.party.contact" applEnumId="ESIA_INCLUDE"/> 
<!-- all order and related information, including payment, etc info --> 
<EntityGroupEntry entityGroupId="5506" entityOrPackage="org.ofbiz.order" 
applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.accounting.invoice" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.accounting.payment" applEnumId="ESIA_INCLUDE"/> 
<!-- include inventory and issuance info --> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.shipment.issuance" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.product.inventory" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.pos.PosTerminalLog" applEnumId="ESIA_INCLUDE"/> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.pos.PosTerminalState" applEnumId="ESIA_INCLUDE"/> 
<!-- include POS transactions --> 
<EntityGroupEntry entityGroupId="5506" 
entityOrPackage="org.ofbiz.pos.PosTerminalInternTx" applEnumId="ESIA_INCLUDE"/> 


<!-- Some examples of EntitySync settings for pulling and pushing data around 
--> 
<!-- POS example meant to be used for pushing data from POS to MCS --> 
<EntitySync entitySyncId="POSPUSH" runStatusId="ESR_NOT_STARTED" 
syncSplitMillis="600000" targetServiceName="remoteStoreEntitySyncDataRmi" 
keepRemoveInfoHours="24" forPushOnly="Y"/> 
<EntitySyncIncludeGroup entitySyncId="POSPUSH" entityGroupId="5506"/> 

<!-- POS example meant to be used for pulling data from MCS to POS --> 
<!-- NOTE: for pulling setup the EntitySync record lives on the server the data 
is pulled from and should ONLY BE USED FOR ONE CLIENT! --> 
<EntitySync entitySyncId="<POS Terminal ID>" runStatusId="ESR_NOT_STARTED" 
syncSplitMillis="600000" 
keepRemoveInfoHours="24" forPullOnly="Y"/> 
<EntitySyncIncludeGroup entitySyncId="<POS Terminal ID>" entityGroupId="5501"/> 

<!-- POS Push Scheduled Service --> 
<!-- 
<RecurrenceRule recurrenceRuleId="POSPUSH" untilDateTime="" 
frequency="MINUTELY" intervalNumber="5" countNumber="-1"/> 
<RecurrenceInfo recurrenceInfoId="POSPUSH" startDateTime="2000-01-01 
00:00:00.000" recurrenceRuleId="POSPUSH" recurrenceCount="0"/> 
<RuntimeData runtimeDataId="POSPUSH"> 
<runtimeInfo><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
<ofbiz-ser> 
<map-HashMap> 
<map-Entry> 
<map-Key> 
<std-String value="entitySyncId"/> 
</map-Key> 
<map-Value> 
<std-String value="POSPUSH"/> 
</map-Value> 
</map-Entry> 
</map-HashMap> 
</ofbiz-ser> 
]]></runtimeInfo> 
</RuntimeData> 
<JobSandbox jobId="POSPUSH" jobName="Push POS Data" runtimeDataId="POSPUSH" 
runTime="2000-01-01 00:00:00.000" serviceName="runEntitySync" poolId="pool" 
runAsUser="system" recurrenceInfoId="POSPUSH"/> 
--> 

<!-- POSPULL Scheduled Service --> 
<RecurrenceRule recurrenceRuleId="POSPULL" untilDateTime="" frequency="HOURLY" 
intervalNumber="2" countNumber="-1"/> 
<RecurrenceInfo recurrenceInfoId="POSPULL" startDateTime="2000-01-01 
00:15:00.000" recurrenceRuleId="POSPULL" recurrenceCount="0"/> 
<RuntimeData runtimeDataId="POSPULL"> 
<runtimeInfo><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
<ofbiz-ser> 
<map-HashMap> 
<map-Entry> 
<map-Key> 
<std-String value="entitySyncId"/> 
</map-Key> 
<map-Value> 
<std-String value="<POS Terminal ID>"/> 
</map-Value> 
</map-Entry> 
<map-Entry> 
<map-Key> 
<std-String value="remotePullAndReportEntitySyncDataName"/> 
</map-Key> 
<map-Value> 
<std-String value="remotePullAndReportEntitySyncDataRmi"/> 
</map-Value> 
</map-Entry> 
</map-HashMap> 
</ofbiz-ser> 
]]></runtimeInfo> 
</RuntimeData> 
<JobSandbox jobId="POSPULL" jobName="Pull Data from MCS" 
runtimeDataId="POSPULL" runTime="2000-01-01 00:00:00.000" 
serviceName="runPullEntitySync" poolId="pool" runAsUser="system" 
recurrenceInfoId="POSPULL"/> 

</entity-engine-xml> 


----- Original Message ----- 
From: "Ajey.bitin" <[EMAIL PROTECTED]> 
To: [email protected] 
Sent: Wednesday, August 6, 2008 10:52:42 PM (GMT-0700) America/Denver 
Subject: Re: Problems while PUSH and PULL entity sync process in POS 


Hi Vince, 

I'm also trying to setup POS completely and struggling around the PULL 
activity. I've configured POS for only POS terminals and one MCS. Here with 
my settings, PUSH is being called successfully but I'm not able to configure 
PULL in the system. I knew from the mailing list, you have experimented a 
lot in POS. 

At present my serviceengine.xml of POS Terminal is configured with this 
setting: 
<service-location name="main-rmi" 
location="rmi://server:1098/RMIDispatcher"/> 
<service-location name="main-http" 
location="http://server:8089/webtools/control/httpService"/> 

<service-location name="entity-sync-rmi" 
location="rmi://server:1098/RMIDispatcher"/> 
<service-location name="entity-sync-http" 
location="http://server:8089/webtools/control/httpService"/> 

<service-location name="rita-rmi" 
location="rmi://server:1098/RMIDispatcher"/> 
<service-location name="eedcc-test" 
location="http://server:8089/webtools/control/httpService"/> 

The serviceengine.xml of Server (MCS) is configured with this setting: 
<service-location name="main-rmi" 
location="rmi://localhost:1088/RMIDispatcher"/> 
<service-location name="main-http" 
location="http://localhost:8080/webtools/control/httpService"/> 

<service-location name="entity-sync-rmi" 
location="rmi://localhost:1088/RMIDispatcher"/> 
<service-location name="entity-sync-http" 
location="http://localhost:8080/webtools/control/httpService"/> 

<service-location name="rita-rmi" 
location="rmi://localhost:1088/RMIDispatcher"/> 
<service-location name="eedcc-test" 
location="http://localhost:8080/webtools/control/httpService"/> 

I've configured the PosSyncSettings.xml of POS Terminal with PUSH but I'm 
getting difficulty to configure PULL, like what kind of setting I need to do 
on both POS Terminal and Server(MCS) regarding PULL. How every POS Terminal 
can call PULL so that all inventory, returns and Promo kind of information 
will be updated on all POS Terminals. 

Any help is highly appreciated. 

Thanx in advance, 

Ajey 




Vince Clark wrote: 
> 
> 
> Pradeep 
> 
> Your settings looked fine in PosSyncSettings.xml. I have the impression 
> from your thread so far that you understand the setup when eliminating the 
> PSS and using the POS terminal to go directly to MCS. This is the setup we 
> have used as well so we're on the same page with that configuration. 
> 
> It can get a little tricky knowing what config to load on what server (POS 
> or MCS.) I have some notes at the top of my custom PosSyncSettings.xml 
> that I will send in a follow up message. Unfortunately I have to boot 
> another computer to get to them. But they go step by step on what to load 
> where. 
> 
> ----- Original Message ----- 
> From: "Jacques Le Roux" <[EMAIL PROTECTED]> 
> To: [email protected] 
> Sent: Monday, April 21, 2008 3:45:47 AM (GMT-0700) America/Denver 
> Subject: Re: Problems while PUSH and PULL entity sync process in POS 
> 
> 
> 
>> Hi Vince, 
>> 
>> Sorry I forgot to ask one importnt thing. The RMIIF environment variable 
>> is 
>> defined in startup script startofbiz.sh. But I'm using the windows 
>> environment to test it. Now in this case how can I set this RMIIF in our 
>> environment variable. 
> 
> Simply tranpose to Windows this is a param tpo pass to JVM : 
> -Djava.rmi.server.hostname=<set your IP address here>" 
> 
>> Also, will there be any difference in the contents of PosSyncSeetings.xml 
>> on 
>> PSS+POS System and MCS System as I'm calling same two services on both 
>> system. This i the place where I'm a bit confused. 
> 
> Are you using 2 different DBs on the PSS+POS System (one for each OFBiz 
> instance) ? Are you relaying through PSS when you send from 
> POS to MCS (this is the intended basic scheme, of course you can build 
> your own...) ? 
> 
> Jacques 
> 
>> -- 
>> With regards, 
>> S K Pradeep kumar 
>> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Problems-while-PUSH-and-PULL-entity-sync-process-in-POS-tp16801589p18864051.html
 
Sent from the OFBiz - User mailing list archive at Nabble.com. 

Reply via email to