Author: nmalin
Date: Fri Jan 29 12:52:34 2016 New Revision: 1727570 URL: http://svn.apache.org/viewvc?rev=1727570&view=rev Log: Add the possibility to set a blackout period for job manager service. During this time all async and scheduled service are put on hold. This improvement add a entity JobManagerLock, a new screen to add/edit job manager lock and an information for end user on FindJob and ScheduleJob screen. See more information on issue OFBIZ-6790. Thanks to Jacques for sharing on this improvement. Modified: ofbiz/trunk/framework/common/data/CommonTypeData.xml ofbiz/trunk/framework/service/data/ServiceSeedData.xml ofbiz/trunk/framework/service/entitydef/entitymodel.xml ofbiz/trunk/framework/service/servicedef/services.xml ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java ofbiz/trunk/framework/webtools/config/WebtoolsUiLabels.xml ofbiz/trunk/framework/webtools/data/WebtoolsSecurityGroupDemoData.xml ofbiz/trunk/framework/webtools/data/WebtoolsSecurityPermissionSeedData.xml ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml ofbiz/trunk/framework/webtools/webapp/webtools/main.ftl ofbiz/trunk/framework/webtools/widget/CommonScreens.xml ofbiz/trunk/framework/webtools/widget/Menus.xml ofbiz/trunk/framework/webtools/widget/ServiceForms.xml ofbiz/trunk/framework/webtools/widget/ServiceScreens.xml Modified: ofbiz/trunk/framework/common/data/CommonTypeData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/data/CommonTypeData.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/common/data/CommonTypeData.xml (original) +++ ofbiz/trunk/framework/common/data/CommonTypeData.xml Fri Jan 29 12:52:34 2016 @@ -138,4 +138,8 @@ under the License. <StatusValidChange statusId="KW_PENDING" statusIdTo="KW_APPROVED" transitionName="Review Approved"/> <StatusValidChange statusId="KW_PENDING" statusIdTo="KW_DISAPPROVED" transitionName="Review Disapproved"/> + <!-- OFBiz Instance --> + <EnumerationType enumTypeId="JM_OFBIZ_INSTANCE" hasTable="N" description="OFBiz Instance"/> + <Enumeration enumId="JM_OFBIZ_INS_0" enumTypeId="JM_OFBIZ_INSTANCE" enumCode="_NA_" sequenceId="00" description="ALL instance"/> + <Enumeration enumId="JM_OFBIZ_INS_1" enumTypeId="JM_OFBIZ_INSTANCE" enumCode="ofbiz1" sequenceId="01" description="OFBiz instance 1"/> </entity-engine-xml> Modified: ofbiz/trunk/framework/service/data/ServiceSeedData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/data/ServiceSeedData.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/service/data/ServiceSeedData.xml (original) +++ ofbiz/trunk/framework/service/data/ServiceSeedData.xml Fri Jan 29 12:52:34 2016 @@ -198,4 +198,10 @@ under the License. [9] Integer: 0 to 59 --> + <!-- JobSandbox lock reason Enum --> + <EnumerationType enumTypeId="JS_LOCK_REASON" hasTable="N" description="JobSandbox lock reason"/> + <Enumeration enumId="JS_LOCK_REASON_0" enumTypeId="JS_LOCK_REASON" enumCode="0" sequenceId="00" description="Instance updating"/> + <Enumeration enumId="JS_LOCK_REASON_1" enumTypeId="JS_LOCK_REASON" enumCode="1" sequenceId="01" description="Instance surcharge"/> + <Enumeration enumId="JS_LOCK_REASON_2" enumTypeId="JS_LOCK_REASON" enumCode="2" sequenceId="02" description="Instance maintenance"/> + </entity-engine-xml> Modified: ofbiz/trunk/framework/service/entitydef/entitymodel.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/entitydef/entitymodel.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/service/entitydef/entitymodel.xml (original) +++ ofbiz/trunk/framework/service/entitydef/entitymodel.xml Fri Jan 29 12:52:34 2016 @@ -186,6 +186,23 @@ under the License. </view-link> </view-entity> + <entity entity-name="JobManagerLock" package-name="org.ofbiz.service.schedule" title="Lock Job Manager Scheduler"> + <field name="instanceId" type="id"/> + <field name="fromDate" type="date-time"/> + <field name="thruDate" type="date-time"/> + <field name="reasonEnumId" type="id"/> + <field name="comments" type="comment"/> + <field name="createdDate" type="date-time"/> + <field name="createdByUserLogin" type="id-vlong"/> + <field name="lastModifiedDate" type="date-time"/> + <field name="lastModifiedByUserLogin" type="id-vlong"/> + <prim-key field="instanceId"/> + <prim-key field="fromDate"/> + <relation type="one" fk-name="JOBLK_ENUM_REAS" rel-entity-name="Enumeration" title="Reason"> + <key-map field-name="reasonEnumId" rel-field-name="enumId"/> + </relation> + </entity> + <!-- ========================================================= --> <!-- org.ofbiz.service.semaphore --> <!-- ========================================================= --> Modified: ofbiz/trunk/framework/service/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/servicedef/services.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/service/servicedef/services.xml (original) +++ ofbiz/trunk/framework/service/servicedef/services.xml Fri Jan 29 12:52:34 2016 @@ -128,4 +128,20 @@ under the License. <attribute name="fromDate" mode="IN" type="java.sql.Timestamp" optional="true"/> <attribute name="thruDate" mode="IN" type="java.sql.Timestamp" optional="true"/> </service> + + <!-- JobManagerLock Services --> + <service name="createJobManagerLock" default-entity-name="JobManagerLock" engine="entity-auto" invoke="create" auth="true"> + <description>Create a Job Manager Lock</description> + <permission-service service-name="commonGenericPermission" main-action="CREATE"/> + <auto-attributes include="pk" mode="IN" optional="false"/> + <auto-attributes include="nonpk" mode="IN" optional="true"/> + </service> + + <service name="updateJobManagerLock" default-entity-name="JobManagerLock" engine="entity-auto" invoke="update" auth="true"> + <description>Cancel a Job Sandbox Lock</description> + <permission-service service-name="commonGenericPermission" main-action="UPDATE"/> + <auto-attributes include="pk" mode="IN" optional="false"/> + <auto-attributes include="nonpk" mode="IN" optional="true"/> + </service> + </services> Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobManager.java Fri Jan 29 12:52:34 2016 @@ -40,6 +40,7 @@ import org.ofbiz.entity.GenericEntityExc import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.entity.condition.EntityExpr; +import org.ofbiz.entity.condition.EntityJoinOperator; import org.ofbiz.entity.condition.EntityOperator; import org.ofbiz.entity.serialize.SerializeException; import org.ofbiz.entity.serialize.XmlSerializer; @@ -135,6 +136,28 @@ public final class JobManager { return JobPoller.getInstance().getPoolState(); } + /** + * Return true if the jobManager can run job. + * + * @return boolean. + */ + public boolean isAvailable() { + try { + //check if a lock is enable for the period on entity JobManagerLock + EntityCondition condition = EntityCondition.makeCondition(UtilMisc.toList( + EntityCondition.makeConditionDate("fromDate", "thruDate"), + EntityCondition.makeCondition(UtilMisc.toList( + EntityCondition.makeCondition("instanceId", instanceId), + EntityCondition.makeCondition("instanceId", "_NA_")) + , EntityJoinOperator.OR) + ), EntityJoinOperator.AND); + return delegator.findCountByCondition("JobManagerLock", condition, null, null) == 0; + } catch (GenericEntityException e) { + Debug.logWarning(e, "Exception thrown while check lock on JobManager : " + instanceId, module); + return false; + } + } + private static List<String> getRunPools() throws GenericConfigException { List<RunFromPool> runFromPools = ServiceConfigUtil.getServiceEngine().getThreadPool().getRunFromPools(); List<String> readPools = new ArrayList<String>(runFromPools.size()); Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java Fri Jan 29 12:52:34 2016 @@ -220,6 +220,10 @@ public final class JobPoller implements Collection<JobManager> jmCollection = jobManagers.values(); List<Iterator<Job>> pollResults = new ArrayList<Iterator<Job>>(); for (JobManager jm : jmCollection) { + if (!jm.isAvailable()) { + if (Debug.infoOn()) Debug.logInfo("The job manager is locked.", module); + continue; + } jm.reloadCrashedJobs(); pollResults.add(jm.poll(remainingCapacity).iterator()); } Modified: ofbiz/trunk/framework/webtools/config/WebtoolsUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/config/WebtoolsUiLabels.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/config/WebtoolsUiLabels.xml (original) +++ ofbiz/trunk/framework/webtools/config/WebtoolsUiLabels.xml Fri Jan 29 12:52:34 2016 @@ -679,6 +679,10 @@ <value xml:lang="zh">è¿è¡æå¡</value> <value xml:lang="zh-TW">å·è¡æå</value> </property> + <property key="PageTitleJobManagerLockList"> + <value xml:lang="en">Job manager locks list</value> + <value xml:lang="fr">Blocage du gestionnaire de service</value> + </property> <property key="PageTitleScheduleJob"> <value xml:lang="de">Job anlegen</value> <value xml:lang="en">Schedule Job</value> @@ -1399,6 +1403,10 @@ <value xml:lang="zh">å建/å é¤ä¸»é®</value> <value xml:lang="zh-TW">æ°å»º/åªé¤ä¸»éµ</value> </property> + <property key="WebtoolsCurrentJobManagerLock"> + <value xml:lang="en">Current job manager locks</value> + <value xml:lang="fr">Blocages actuels du gestionnaire de service</value> + </property> <property key="WebtoolsDaemon"> <value xml:lang="de">Daemon</value> <value xml:lang="en">Daemon</value> @@ -2878,6 +2886,10 @@ <value xml:lang="zh">æ¥å¿æä»¶</value> <value xml:lang="zh-TW">æ¥èªæª</value> </property> + <property key="WebtoolsJobManagerLockEnable"> + <value xml:lang="en">Job manager locks enabled</value> + <value xml:lang="fr">Blocages actifs sur le gestionnaire de service</value> + </property> <property key="WebtoolsLHSMapName"> <value xml:lang="de">Name der LHS-Map</value> <value xml:lang="en">LHS map name</value> @@ -3668,6 +3680,10 @@ <value xml:lang="zh">åç§°æè§è²</value> <value xml:lang="zh-TW">å稱æè§è²</value> </property> + <property key="WebtoolsNextJobManagerLock"> + <value xml:lang="en">Next job manager locks</value> + <value xml:lang="fr">Prochains blocages du gestionnaire de service</value> + </property> <property key="WebtoolsNoEntitiesRead"> <value xml:lang="de">Keine Entität eingelesen</value> <value xml:lang="en">No entities read</value> @@ -4691,6 +4707,10 @@ <value xml:lang="zh">éæ©æ§è¡ç¨åº</value> <value xml:lang="zh-TW">鏿å·è¡ç¨å¼</value> </property> + <property key="WebtoolsJobManagerLockList"> + <value xml:lang="en">Job manager locks List</value> + <value xml:lang="fr">Liste des blocages du gest. service</value> + </property> <property key="WebtoolsServerHitStatisticsTools"> <value xml:lang="de">Statistik-Tools für Server-Besuche</value> <value xml:lang="en">Server Hit Statistics Tools</value> Modified: ofbiz/trunk/framework/webtools/data/WebtoolsSecurityGroupDemoData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/data/WebtoolsSecurityGroupDemoData.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/data/WebtoolsSecurityGroupDemoData.xml (original) +++ ofbiz/trunk/framework/webtools/data/WebtoolsSecurityGroupDemoData.xml Fri Jan 29 12:52:34 2016 @@ -44,7 +44,9 @@ under the License. <!-- Service Maintenance security --> <SecurityGroupPermission groupId="FULLADMIN" permissionId="SERVICE_MAINT"/> + <SecurityGroupPermission groupId="FULLADMIN" permissionId="SERVICE_JM_LOCK"/> <SecurityGroupPermission groupId="FLEXADMIN" permissionId="SERVICE_MAINT"/> + <SecurityGroupPermission groupId="FLEXADMIN" permissionId="SERVICE_JM_LOCK"/> <!-- Period Maintenance security --> <SecurityGroupPermission groupId="FULLADMIN" permissionId="PERIOD_MAINT"/> Modified: ofbiz/trunk/framework/webtools/data/WebtoolsSecurityPermissionSeedData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/data/WebtoolsSecurityPermissionSeedData.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/data/WebtoolsSecurityPermissionSeedData.xml (original) +++ ofbiz/trunk/framework/webtools/data/WebtoolsSecurityPermissionSeedData.xml Fri Jan 29 12:52:34 2016 @@ -35,6 +35,7 @@ under the License. <!-- Service Maintenance security --> <SecurityPermission description="Use the Service Maintenance pages." permissionId="SERVICE_MAINT"/> + <SecurityPermission description="Edit the job manager lock on the Service Maintenance pages." permissionId="SERVICE_JM_LOCK"/> <!-- Period Maintenance security --> <SecurityPermission description="Use the Period Maintenance pages." permissionId="PERIOD_MAINT"/> @@ -64,6 +65,7 @@ under the License. <SecurityGroupPermission groupId="SUPER" permissionId="DATAFILE_MAINT"/> <SecurityGroupPermission groupId="SUPER" permissionId="DATAFILE_MAINT"/> <SecurityGroupPermission groupId="SUPER" permissionId="SERVICE_MAINT"/> + <SecurityGroupPermission groupId="SUPER" permissionId="SERVICE_JM_LOCK"/> <SecurityGroupPermission groupId="SUPER" permissionId="PERIOD_MAINT"/> <SecurityGroupPermission groupId="SUPER" permissionId="ENUM_STATUS_MAINT"/> <SecurityGroupPermission groupId="SUPER" permissionId="ENTITY_MAINT"/> Modified: ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml (original) +++ ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml Fri Jan 29 12:52:34 2016 @@ -327,6 +327,20 @@ under the License. <response name="success" type="view" value="runService"/> <response name="error" type="view" value="error"/> </request-map> + <request-map uri="AddJobManagerLock"><security https="true" auth="true"/><response name="success" type="view" value="AddJobManagerLock"/></request-map> + <request-map uri="FindJobManagerLock"><security https="true" auth="true"/><response name="success" type="view" save-current-view="false" value="FindJobManagerLock"/></request-map> + <request-map uri="createJobManagerLock"> + <security https="true" auth="true"/> + <event type="service" invoke="createJobManagerLock"/> + <response name="success" type="request" value="json"/> + <response name="error" type="request" value="json"/> + </request-map> + <request-map uri="updateJobManagerLock"> + <security https="true" auth="true"/> + <event type="service" invoke="updateJobManagerLock"/> + <response name="success" type="view" value="FindJobManagerLock"/> + <response name="error" type="view" value="FindJobManagerLock"/> + </request-map> <!-- Available services requests --> <request-map uri="serviceEcaDetail"> @@ -648,6 +662,8 @@ under the License. <view-map name="setServiceParameters" type="screen" page="component://webtools/widget/ServiceScreens.xml#setServiceParameters"/> <view-map name="setSyncServiceParameters" type="screen" page="component://webtools/widget/ServiceScreens.xml#setSyncServiceParameters"/> <view-map name="serviceEcaDetail" type="screen" page="component://webtools/widget/AvailableServicesScreens.xml#ServiceEcaDetail"/> + <view-map name="AddJobManagerLock" type="screen" page="component://webtools/widget/ServiceScreens.xml#AddJobManagerLock"/> + <view-map name="FindJobManagerLock" type="screen" page="component://webtools/widget/ServiceScreens.xml#FindJobManagerLock"/> <view-map name="printStart" type="screen" page="component://webtools/widget/CommonScreens.xml#printStart"/> <view-map name="printDone" type="screen" page="component://webtools/widget/CommonScreens.xml#printDone"/> Modified: ofbiz/trunk/framework/webtools/webapp/webtools/main.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/main.ftl?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/webapp/webtools/main.ftl (original) +++ ofbiz/trunk/framework/webtools/webapp/webtools/main.ftl Fri Jan 29 12:52:34 2016 @@ -88,6 +88,7 @@ under the License. <li><a href="<@ofbizUrl>runService</@ofbizUrl>">${uiLabelMap.PageTitleRunService}</a></li> <li><a href="<@ofbizUrl>FindJob</@ofbizUrl>">${uiLabelMap.PageTitleJobList}</a></li> <li><a href="<@ofbizUrl>threadList</@ofbizUrl>">${uiLabelMap.PageTitleThreadList}</a></li> + <li><a href="<@ofbizUrl>FindJobManagerLock</@ofbizUrl>">${uiLabelMap.PageTitleJobManagerLockList}</a></li> <li><a href="<@ofbizUrl>ServiceLog</@ofbizUrl>">${uiLabelMap.WebtoolsServiceLog}</a></li> </#if> <#if security.hasPermission("DATAFILE_MAINT", session)> Modified: ofbiz/trunk/framework/webtools/widget/CommonScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/CommonScreens.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/widget/CommonScreens.xml (original) +++ ofbiz/trunk/framework/webtools/widget/CommonScreens.xml Fri Jan 29 12:52:34 2016 @@ -108,6 +108,20 @@ under the License. </section> </screen> + <screen name="PopUpDecorator"> + <section> + <actions> + <property-map resource="TemporalExpressionUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="WebtoolsUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="SecurityUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/> + </actions> + <widgets> + <include-screen name="LookupDecorator" location="component://common/widget/CommonScreens.xml"/> + </widgets> + </section> + </screen> + <screen name="CommonEntityDecorator"> <section> <actions> Modified: ofbiz/trunk/framework/webtools/widget/Menus.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/Menus.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/widget/Menus.xml (original) +++ ofbiz/trunk/framework/webtools/widget/Menus.xml Fri Jan 29 12:52:34 2016 @@ -111,6 +111,9 @@ under the License. <menu-item name="threadList" title="${uiLabelMap.WebtoolsThreadList}"> <link target="threadList"/> </menu-item> + <menu-item name="FindJobManagerLock" title="${uiLabelMap.WebtoolsJobManagerLockList}"> + <link target="FindJobManagerLock"/> + </menu-item> <menu-item name="scheduleJob" title="${uiLabelMap.WebtoolsScheduleJob}"> <link target="scheduleJob"/> </menu-item> Modified: ofbiz/trunk/framework/webtools/widget/ServiceForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/ServiceForms.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/widget/ServiceForms.xml (original) +++ ofbiz/trunk/framework/webtools/widget/ServiceForms.xml Fri Jan 29 12:52:34 2016 @@ -138,4 +138,92 @@ under the License. <field name="startTime" title="${uiLabelMap.CommonStartDateTime}" sort-field="true"><display/></field> <field name="endTime" title="${uiLabelMap.CommonEndDateTime}" sort-field="true"><display default-value="${uiLabelMap.WebtoolsStatusRunning}"/></field> </form> + <form name="FindJobManagerLock" type="single" target="FindJobManagerLock" default-entity-name="JobManagerLock"> + <field name="noConditionFind"><hidden value="Y"/><!-- if this isn't there then with all fields empty no query will be done --></field> + <field name="instanceId"> + <drop-down allow-empty="true"> + <entity-options entity-name="Enumeration" key-field-name="enumCode" description="${enumCode} - ${description}"> + <entity-constraint name="enumTypeId" value="JM_OFBIZ_INSTANCE"/> + </entity-options> + </drop-down> + </field> + <field name="fromDate"><date-find/></field> + <field name="thruDate"><date-find/></field> + <field name="reasonEnumId" title="${uiLabelMap.CommonReason}"> + <drop-down allow-empty="true"> + <entity-options entity-name="Enumeration" key-field-name="enumId" description="[${enumCode}] - ${description}"> + <entity-constraint name="enumTypeId" value="JS_LOCK_REASON"/> + </entity-options> + </drop-down> + </field> + <field name="searchButton"><submit/></field> + </form> + <form name="ListJobManagerLock" type="list" list-name="listIt" paginate-target="FindJobManagerLock" default-entity-name="JobManagerLock" separate-columns="true" + odd-row-style="alternate-row" header-row-style="header-row-2" default-table-style="basic-table hover-bar"> + <actions> + <service service-name="performFind" result-map="result" result-map-list="listIt"> + <field-map field-name="inputFields" from-field="parameters"/> + <field-map field-name="entityName" value="JobManagerLock"/> + <field-map field-name="orderBy" from-field="parameters.sortField"/> + </service> + </actions> + <row-actions> + <set field="editable" value="${groovy: security.hasPermission('SERVICE_JM_LOCK', userLogin) }" type="Boolean"/> + <set field="cancelable" value="${groovy: thruDate == null || thruDate.compareTo(nowTimestamp) > 0}" type="Boolean"/> + </row-actions> + <field name="instanceId" sort-field="true"><display/></field> + <field name="fromDate" sort-field="true"><display/></field> + <field name="thruDate" sort-field="true"><display/></field> + <field name="createdDate" sort-field="true"><display/></field> + <field name="createdByUserLogin" sort-field="true"><display/></field> + <field name="reasonEnumId" sort-field="true" title="${uiLabelMap.CommonReason}"><display-entity entity-name="Enumeration" key-field-name="enumId" description="[${enumCode}] ${description}"/></field> + <field name="comments"><display/></field> + <field name="cancelButton" title=" " use-when="editable && cancelable" widget-style="buttontext"> + <hyperlink also-hidden="false" description="${uiLabelMap.CommonCancel}" target="updateJobManagerLock"> + <parameter param-name="instanceId"/> + <parameter param-name="fromDate"/> + <parameter param-name="thruDate" value="${nowTimestamp}"/> + </hyperlink> + </field> + </form> + <form name="AddJobManagerLock" type="single" target="createJobManagerLock" default-entity-name="JobManagerLock"> + <field name="instanceId"> + <drop-down> + <entity-options entity-name="Enumeration" key-field-name="enumCode" description="${enumCode} - ${description}"> + <entity-constraint name="enumTypeId" value="JM_OFBIZ_INSTANCE"/> + </entity-options> + </drop-down> + </field> + <field name="fromDate"><date-time/></field> + <field name="thruDate"><date-time/></field> + <field name="reasonEnumId" title="${uiLabelMap.CommonReason}"> + <drop-down allow-empty="true"> + <entity-options entity-name="Enumeration" key-field-name="enumId" description="[${enumCode}] - ${description}"> + <entity-constraint name="enumTypeId" value="JS_LOCK_REASON"/> + </entity-options> + </drop-down> + </field> + <field name="comments"><text/></field> + <field name="addButton"><submit/></field> + <on-event-update-area area-target="FindJobManagerLock" event-type="submit" area-id="window"/> + </form> + <grid name="JobManagerLockEnable" list-name="jobManagerLocks" + odd-row-style="alternate-row" header-row-style="header-row-2" default-table-style="basic-table hover-bar"> + <row-actions> + <set field="editable" value="${groovy: security.hasPermission('SERVICE_JM_LOCK', userLogin) }" type="Boolean"/> + <set field="cancelable" value="${groovy: thruDate == null || thruDate.compareTo(nowTimestamp) > 0}" type="Boolean"/> + </row-actions> + <field name="instanceId"><display/></field> + <field name="fromDate" title="${uiLabelMap.CommonFrom}" red-when="never"><display type="date-time"/></field> + <field name="thruDate" title="${uiLabelMap.CommonThru}" red-when="never"><display type="date-time"/></field> + <field name="createdByUserLogin" title="${uiLabelMap.CommonBy}"><display/></field> + <field name="reasonEnumId" title="${uiLabelMap.CommonReason}"><display-entity entity-name="Enumeration" key-field-name="enumId" description="[${enumCode}] ${description}"/></field> + <field name="cancelButton" title=" " use-when="editable && cancelable" widget-style="buttontext"> + <hyperlink also-hidden="false" description="${uiLabelMap.CommonCancel}" target="updateJobManagerLock"> + <parameter param-name="instanceId"/> + <parameter param-name="fromDate"/> + <parameter param-name="thruDate" value="${nowTimestamp}"/> + </hyperlink> + </field> + </grid> </forms> Modified: ofbiz/trunk/framework/webtools/widget/ServiceScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/ServiceScreens.xml?rev=1727570&r1=1727569&r2=1727570&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/widget/ServiceScreens.xml (original) +++ ofbiz/trunk/framework/webtools/widget/ServiceScreens.xml Fri Jan 29 12:52:34 2016 @@ -55,6 +55,7 @@ under the License. <widgets> <decorator-screen name="CommonServiceDecorator" location="${parameters.mainDecoratorLocation}"> <decorator-section name="body"> + <include-screen name="JobManagerLockEnable"/> <section> <widgets> <platform-specific><html><html-template location="component://common/webcommon/includes/ServerHour24HourFormatJs.ftl"/></html></platform-specific> @@ -130,6 +131,7 @@ under the License. <widgets> <decorator-screen name="CommonServiceDecorator" location="${parameters.mainDecoratorLocation}"> <decorator-section name="body"> + <include-screen name="JobManagerLockEnable"/> <screenlet title="${uiLabelMap.WebtoolsStep1ServiceAndRecurrenceInfo}"> <include-form name="scheduleJob" location="component://webtools/widget/ServiceForms.xml"/> </screenlet> @@ -220,4 +222,107 @@ under the License. </widgets> </section> </screen> + + <screen name="FindJobManagerLock"> + <section> + <actions> + <set field="titleProperty" value="PageTitleJobManagerLockList"/> + <set field="tabButtonItem" value="FindJobManagerLock"/> + </actions> + <widgets> + <decorator-screen name="CommonServiceDecorator" location="${parameters.mainDecoratorLocation}"> + <decorator-section name="body"> + <container style="page-title"><label text="${uiLabelMap[titleProperty]}"></label></container> + <section> + <condition><if-has-permission permission="SERVICE_JM_LOCK"/></condition> + <widgets> + <container style="button-bar"> + <link target="AddJobManagerLock" text="${uiLabelMap.CommonAdd}" style="buttontext create" link-type="layered-modal"/> + </container> + </widgets> + </section> + <screenlet id="searchOptions" name="findScreenlet" collapsible="true" title="${uiLabelMap.CommonSearchOptions}"> + <container id="search-options"> + <include-form name="FindJobManagerLock" location="component://webtools/widget/ServiceForms.xml"/> + </container> + </screenlet> + <screenlet padded="false"> + <label style="h3" text="${uiLabelMap.CommonSearchResults}"/> + <container id="search-results"> + <include-form name="ListJobManagerLock" location="component://webtools/widget/ServiceForms.xml"/> + </container> + </screenlet> + </decorator-section> + </decorator-screen> + </widgets> + </section> + </screen> + <screen name="AddJobManagerLock"> + <section> + <widgets> + <decorator-screen name="PopUpDecorator" location="${parameters.mainDecoratorLocation}"> + <decorator-section name="body"> + <include-form name="AddJobManagerLock" location="component://webtools/widget/ServiceForms.xml"/> + </decorator-section> + </decorator-screen> + </widgets> + </section> + </screen> + <screen name="JobManagerLockEnable"> + <section> + <actions> + <entity-condition list="currentJobManagerLocks" entity-name="JobManagerLock" filter-by-date="true"> + <order-by field-name="fromDate"/> + </entity-condition> + <entity-condition list="nextJobManagerLocks" entity-name="JobManagerLock" filter-by-date="false"> + <condition-list> + <condition-expr field-name="fromDate" operator="greater" from-field="nowTimestamp"/> + <condition-list combine="or"> + <condition-expr field-name="thruDate" operator="greater" from-field="nowTimestamp"/> + <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> + </condition-list> + </condition-list> + <order-by field-name="fromDate"/> + </entity-condition> + </actions> + <widgets> + <section> + <condition> + <or> + <not><if-empty field="currentJobManagerLocks"/></not> + <not><if-empty field="nextJobManagerLocks"/></not> + </or> + </condition> + <widgets> + <screenlet title="${uiLabelMap.WebtoolsJobManagerLockEnable}"> + <section> + <condition> + <not><if-empty field="currentJobManagerLocks"/></not> + </condition> + <actions> + <set field="jobManagerLocks" from-field="currentJobManagerLocks"/> + </actions> + <widgets> + <label style="h3">${uiLabelMap.WebtoolsCurrentJobManagerLock}</label> + <include-grid location="component://webtools/widget/ServiceForms.xml" name="JobManagerLockEnable"/> + </widgets> + </section> + <section> + <condition> + <not><if-empty field="nextJobManagerLocks"/></not> + </condition> + <actions> + <set field="jobManagerLocks" from-field="nextJobManagerLocks"/> + </actions> + <widgets> + <label style="h3">${uiLabelMap.WebtoolsNextJobManagerLock}</label> + <include-grid location="component://webtools/widget/ServiceForms.xml" name="JobManagerLockEnable"/> + </widgets> + </section> + </screenlet> + </widgets> + </section> + </widgets> + </section> + </screen> </screens> |
Free forum by Nabble | Edit this page |