Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
1482 posts
|
Author: ashish
Date: Wed Apr 14 10:14:28 2010 New Revision: 933906 URL: http://svn.apache.org/viewvc?rev=933906&view=rev Log: Applied patch from jira issue - OFBIZ-3697 - setLastInventoryCount Service should not be called hourly due to performance issues. 1) In case of large database, when there are so many products into the system, then setLastInventoryCount service consider all the products and update records for them. 2) So it will keep server busy for some time in every one hour. This logic should be improved. 3) Also setLastInventoryCount service does not take facilityId into the account while setting last inventory count in ProductFacility entity. Thanks Divesh & Pranay for the contribution. Modified: ofbiz/trunk/applications/product/data/ProductScheduledServices.xml ofbiz/trunk/applications/product/entitydef/eecas.xml ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml ofbiz/trunk/applications/product/servicedef/services_facility.xml Modified: ofbiz/trunk/applications/product/data/ProductScheduledServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductScheduledServices.xml?rev=933906&r1=933905&r2=933906&view=diff ============================================================================== --- ofbiz/trunk/applications/product/data/ProductScheduledServices.xml (original) +++ ofbiz/trunk/applications/product/data/ProductScheduledServices.xml Wed Apr 14 10:14:28 2010 @@ -21,26 +21,6 @@ under the License. <entity-engine-xml> <JobSandbox jobId="8100" jobName="Purge Old Store Auto-Entered Promos" runTime="2000-01-01 00:00:00.000" serviceName="purgeOldStoreAutoPromos" poolId="pool" runAsUser="system" tempExprId="MIDNIGHT_DAILY" maxRecurrenceCount="-1"/> - <RecurrenceRule recurrenceRuleId="500" untilDateTime="" frequency="HOURLY" intervalNumber="1" countNumber="-1"/> - <RecurrenceInfo recurrenceInfoId="500" startDateTime="2008-05-14 22:00:00.000" recurrenceRuleId="500" recurrenceCount="0"/> - <RuntimeData runtimeDataId="8801"> - <runtimeInfo><![CDATA[<?xml version="1.0" encoding="UTF-8"?> - <ofbiz-ser> - <map-HashMap> - <map-Entry> - <map-Key> - <std-String value="recurrenceInfoId"/> - </map-Key> - <map-Value> - <std-String value="500"/> - </map-Value> - </map-Entry> - </map-HashMap> - </ofbiz-ser> - ]]></runtimeInfo> - </RuntimeData> - <JobSandbox jobId="8801" jobName="Set Last Inventory Count on ProductFacility" runTime="2000-01-01 00:00:00.000" serviceName="setLastInventoryCount" runtimeDataId="8801" poolId="pool" runAsUser="system" recurrenceInfoId="500"/> - <!--Data for scheduling the service productImportFromSpreadsheet --> <!--RecurrenceRule recurrenceRuleId="500" untilDateTime="" frequency="MINUTELY" intervalNumber="5" countNumber="-1"/> <RecurrenceInfo recurrenceInfoId="500" startDateTime="2006-06-06 01:10:00.000" recurrenceRuleId="500" recurrenceCount="0"/> Modified: ofbiz/trunk/applications/product/entitydef/eecas.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/eecas.xml?rev=933906&r1=933905&r2=933906&view=diff ============================================================================== --- ofbiz/trunk/applications/product/entitydef/eecas.xml (original) +++ ofbiz/trunk/applications/product/entitydef/eecas.xml Wed Apr 14 10:14:28 2010 @@ -59,4 +59,8 @@ under the License. <eca entity="InventoryItemDetail" operation="create-store-remove" event="return"> <action service="updateInventoryItemFromDetail" mode="sync"/> </eca> + <eca entity="InventoryItemDetail" operation="create-store-remove" event="return"> + <condition field-name="availableToPromiseDiff" operator="not-equals" value="0" type="BigDecimal"/> + <action service="setLastInventoryCount" mode="sync"/> + </eca> </entity-eca> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml?rev=933906&r1=933905&r2=933906&view=diff ============================================================================== --- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml (original) +++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml Wed Apr 14 10:14:28 2010 @@ -1310,21 +1310,28 @@ under the License. </else> </if-empty> </simple-method> - <simple-method method-name="setLastInventoryCount" short-description="Schedule service that updates stock availability of products hourly"> - <entity-condition entity-name="ProductFacility" list="productFacilities" use-cache="true"> - <use-iterator/> - </entity-condition> - <iterate list="productFacilities" entry="productFacility"> - <set field="serviceInMap.productId" from-field="productFacility.productId"/> - <call-service service-name="getProductInventoryAvailable" in-map-name="serviceInMap"> - <result-to-field result-name="availableToPromiseTotal"/> - </call-service> - <set field="productFacility.lastInventoryCount" from-field="availableToPromiseTotal"/> - <set-service-fields service-name="updateProductFacility" map="productFacility" to-map="productFacilityCtx"/> - <call-service service-name="updateProductFacility" in-map-name="productFacilityCtx"/> - <clear-field field="productFacility"/> - <clear-field field="productFacilityCtx"/> - </iterate> + <simple-method method-name="setLastInventoryCount" short-description="Service that updates stock availability of products"> + <entity-one value-field="inventoryItem" entity-name="InventoryItem" auto-field-map="false"> + <field-map field-name="inventoryItemId" from-field="parameters.inventoryItemId"/> + </entity-one> + <entity-and list="productFacilities" entity-name="ProductFacility"> + <field-map field-name="productId" from-field="inventoryItem.productId" /> + </entity-and> + <if-not-empty field="productFacilities"> + <iterate list="productFacilities" entry="productFacility"> + <set field="serviceInMap.productId" from-field="productFacility.productId"/> + <set field="serviceInMap.facilityId" from-field="productFacility.facilityId"/> + <call-service service-name="getInventoryAvailableByFacility" in-map-name="serviceInMap"> + <result-to-field result-name="availableToPromiseTotal"/> + </call-service> + <clear-field field="serviceInMap"/> + <set field="productFacility.lastInventoryCount" from-field="availableToPromiseTotal"/> + <set-service-fields service-name="updateProductFacility" map="productFacility" to-map="serviceInMap"/> + <call-service service-name="updateProductFacility" in-map-name="serviceInMap"/> + <clear-field field="productFacility"/> + <clear-field field="serviceInMap"/> + </iterate> + </if-not-empty> </simple-method> <simple-method method-name="createUpdateFacilityGeoPoint" short-description="Create or update GeoPoint assigned to facility"> <if-empty field="parameters.geoPointId"> Modified: ofbiz/trunk/applications/product/servicedef/services_facility.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_facility.xml?rev=933906&r1=933905&r2=933906&view=diff ============================================================================== --- ofbiz/trunk/applications/product/servicedef/services_facility.xml (original) +++ ofbiz/trunk/applications/product/servicedef/services_facility.xml Wed Apr 14 10:14:28 2010 @@ -927,8 +927,8 @@ under the License. </service> <service name="setLastInventoryCount" engine="simple" location="component://product/script/org/ofbiz/product/inventory/InventoryServices.xml" invoke="setLastInventoryCount"> - <description>Schedule service that updates lastInventoryCount hourly for products available in facility</description> - <attribute name="recurrenceInfoId" mode="IN" type="String" optional="false"/> + <description>Service which run as EECA (on InventoryItemDetail entity) and updates lastInventoryCount for products available in facility in ProductFacility entity</description> + <attribute name="inventoryItemId" mode="IN" type="String" optional="false"/> </service> <service name="createUpdateFacilityGeoPoint" engine="simple" default-entity-name="GeoPoint" location="component://product/script/org/ofbiz/product/inventory/InventoryServices.xml" invoke="createUpdateFacilityGeoPoint"> |
Free forum by Nabble | Edit this page |