ofbiz实战——实验室预约系统共用配置文件

项目中有些配置文件是其他功能多开共用的配置文件,如:controller.xml,services.xml,secas.xml,eecas.xml,entitymodel.xml,entitymodel_view.xml。所以统一在这里整理记录了。

返回导航页

controller.xml

<?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Site-Conf" xsi:schemaLocation="http://ofbiz.apache.org/Site-Conf http://ofbiz.apache.org/dtds/site-conf.xsd">

    <include location="component://common/webcommon/WEB-INF/common-controller.xml"/>
    <include location="component://common/webcommon/WEB-INF/portal-controller.xml"/>
	<handler name="groovy" type="request" class="org.apache.ofbiz.webapp.event.GroovyEventHandler"/>
	<handler name="java" type="request" class="org.apache.ofbiz.webapp.event.JavaEventHandler"/>
    <description>Booking Component Site Configuration File</description>

    <!-- Request Mappings -->
    <request-map uri="main"><security https="true" auth="true"/><response name="success" type="view" value="main"/></request-map>
	
	<!-- ================ Student Requests ================= -->
    <request-map uri="FindStudent">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindStudent"/>
    </request-map>
    <request-map uri="EditStudent">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditStudent"/>
    </request-map>
	<request-map uri="ImportStudentsPage">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="ImportStudentsPage"/>
    </request-map>
	<request-map uri="ImportStudents">
        <security https="true" auth="true"/>
		<event type="groovy" path="component://booking/groovyScripts/UserLogin.groovy" invoke="importStudents"/>
        <response name="success" type="view" value="FindStudent"/>
		<response name="error" type="view" value="ImportStudentsPage"/>
    </request-map>
	<request-map uri="downloadTemplet">  
		<security   https="true"/>  
		<event type="java" path="org.apache.ofbiz.booking.download.DownloadEvents" invoke="download"/>
		<response name="success" type="none"/>
	</request-map> 
		
    <request-map uri="createStudent">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createStudent"/>
        <response name="success" type="view" value="EditStudent"/>
        <response name="error" type="view" value="EditStudent"/>
    </request-map>
	
    <request-map uri="updateStudent">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateStudent"/>
        <response name="success" type="view" value="EditStudent"/>
        <response name="error" type="view" value="EditStudent"/>
    </request-map>
	<request-map uri="deleteStudent">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteStudent" />  
		<response name="success" type="request-redirect-noparam" value="FindStudent"/>  
	</request-map> 
	<request-map uri="LookupStudent">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupStudent"/>
	</request-map>
	<!-- ================ Teacher Requests ================= -->
    <request-map uri="FindTeacher">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindTeacher"/>
    </request-map>
    <request-map uri="EditTeacher">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditTeacher"/>
    </request-map>

    <request-map uri="createTeacher">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createTeacher"/>
        <response name="success" type="view" value="EditTeacher"/>
        <response name="error" type="view" value="EditTeacher"/>
    </request-map>
	
    <request-map uri="updateTeacher">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateTeacher"/>
        <response name="success" type="view" value="EditTeacher"/>
        <response name="error" type="view" value="EditTeacher"/>
    </request-map>
	<request-map uri="deleteTeacher">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteTeacher" />  
		<response name="success" type="request-redirect-noparam" value="FindTeacher"/>  
	</request-map> 
	<request-map uri="LookupTeacher">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupTeacher"/>
	</request-map>
	<!-- ================ Admin Requests ================= -->
    <request-map uri="FindAdmin">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindAdmin"/>
    </request-map>
    <request-map uri="EditAdmin">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditAdmin"/>
    </request-map>

    <request-map uri="createAdmin">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createAdmin"/>
        <response name="success" type="view" value="EditAdmin"/>
        <response name="error" type="view" value="EditAdmin"/>
    </request-map>
	
    <request-map uri="updateAdmin">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateAdmin"/>
        <response name="success" type="view" value="EditAdmin"/>
        <response name="error" type="view" value="EditAdmin"/>
    </request-map>
	<request-map uri="deleteAdmin">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteAdmin" />  
		<response name="success" type="request-redirect-noparam" value="FindAdmin"/>  
	</request-map> 
	<!-- ================ Term Requests ================= -->
    <request-map uri="FindTerm">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindTerm"/>
    </request-map>
    <request-map uri="EditTerm">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditTerm"/>
    </request-map>

    <request-map uri="createTerm">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createTerm"/>
        <response name="success" type="view" value="EditTerm"/>
        <response name="error" type="view" value="EditTerm"/>
    </request-map>
	
    <request-map uri="updateTerm">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateTerm"/>
        <response name="success" type="view" value="EditTerm"/>
        <response name="error" type="view" value="EditTerm"/>
    </request-map>
	<request-map uri="deleteTerm">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteTerm" />  
		<response name="success" type="request-redirect-noparam" value="FindTerm"/>  
	</request-map> 
	<request-map uri="LookupTerm">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupTerm"/>
	</request-map>
	<!-- ================ Course Requests ================= -->
    <request-map uri="FindCourse">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindCourse"/>
    </request-map>
    <request-map uri="EditCourse">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditCourse"/>
    </request-map>

    <request-map uri="createCourse">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createCourse"/>
        <response name="success" type="view" value="EditCourse"/>
        <response name="error" type="view" value="EditCourse"/>
    </request-map>
	
    <request-map uri="updateCourse">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateCourse"/>
        <response name="success" type="view" value="EditCourse"/>
        <response name="error" type="view" value="EditCourse"/>
    </request-map>
	<request-map uri="deleteCourse">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteCourse" />  
		<response name="success" type="request-redirect-noparam" value="FindCourse"/>  
	</request-map> 
	<request-map uri="LookupCourse">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupCourse"/>
	</request-map>
	<!-- ================ LabProject Requests ================= -->
    <request-map uri="FindLabProject">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindLabProject"/>
    </request-map>
    <request-map uri="EditLabProject">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditLabProject"/>
    </request-map>

    <request-map uri="createLabProject">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createLabProject"/>
        <response name="success" type="view" value="EditLabProject"/>
        <response name="error" type="view" value="EditLabProject"/>
    </request-map>
	
    <request-map uri="updateLabProject">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateLabProject"/>
        <response name="success" type="view" value="EditLabProject"/>
        <response name="error" type="view" value="EditLabProject"/>
    </request-map>
	<request-map uri="deleteLabProject">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteLabProject" />  
		<response name="success" type="request-redirect-noparam" value="FindLabProject"/>  
	</request-map> 
	<request-map uri="LookupLabProject">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupLabProject"/>
	</request-map>
	<!-- ================ LabProjectBatch Requests ================= -->
    <request-map uri="FindLabProjectBatch">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindLabProjectBatch"/>
    </request-map>
    <request-map uri="EditLabProjectBatch">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditLabProjectBatch"/>
    </request-map>

    <request-map uri="createLabProjectBatch">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createLabProjectBatch"/>
        <response name="success" type="view" value="EditLabProjectBatch"/>
        <response name="error" type="view" value="EditLabProjectBatch"/>
    </request-map>
	
    <request-map uri="updateLabProjectBatch">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateLabProjectBatch"/>
        <response name="success" type="view" value="EditLabProjectBatch"/>
        <response name="error" type="view" value="EditLabProjectBatch"/>
    </request-map>
	<request-map uri="deleteLabProjectBatch">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteLabProjectBatch" />  
		<response name="success" type="request-redirect-noparam" value="FindLabProjectBatch"/>  
	</request-map> 
	<request-map uri="LookupLabProjectBatch">
		<security auth="true" https="true"/>
		<response name="success" type="view" value="LookupLabProjectBatch"/>
	</request-map>
	<!-- ================ StuBatch Requests ================= -->
    <request-map uri="FindStuBatch">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindStuBatch"/>
    </request-map>
    <request-map uri="EditStuBatch">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditStuBatch"/>
    </request-map>

    <request-map uri="createStuBatch">
        <security https="true" auth="true"/>
        <event type="service"  invoke="createStuBatch"/>
        <response name="success" type="view" value="EditStuBatch"/>
        <response name="error" type="view" value="EditStuBatch"/>
    </request-map>
	
    <request-map uri="updateStuBatch">
        <security https="true" auth="true"/>
        <event type="service"  invoke="updateStuBatch"/>
        <response name="success" type="request-redirect" value="FindStuBatch"/>
        <response name="error" type="request-redirect" value="FindStuBatch"/>
    </request-map>
	<request-map uri="deleteStuBatch">  
		<security auth="true"  https="true"/>  
		<event type="service" invoke="deleteStuBatch" />  
		<response name="success" type="request-redirect-noparam" value="FindBookingInReview"/>  
	</request-map> 
	<request-map uri="AuditingStuBatch">  
		<security auth="true"  https="true"/>  
		<response name="success" type="view" value="AuditingStuBatch"/>
	</request-map> 
	
	<request-map uri="FindBatchForStudent">  
		<security auth="true"  https="true"/>  
		<response name="success" type="view" value="FindBatchForStudent"/>
	</request-map> 
	
	<request-map uri="BookingBatch">
        <security https="true" auth="true"/>
        <!--<event type="groovy"  path="component://booking/groovyScripts/BookingBatch.groovy" invoke="BookingBatch" />-->
		<event type="service"  invoke="bookingBatchGroovy"/>
        <response name="success" type="request-redirect-noparam" value="FindBatchForStudent"/>  
    </request-map>
	
	<request-map uri="FindBookingInReview">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindBookingInReview"/>
    </request-map>
	<request-map uri="FindMyBooking">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="FindMyBooking"/>
    </request-map>
	
	<request-map uri="EditAuditingResult">
        <security https="true" auth="true"/>
        <response name="success" type="view" value="EditAuditingResult"/>
    </request-map>
	
	<request-map uri="AuditingStuBatchList">
        <security https="true" auth="true"/>
        <!--<event type="groovy"  path="component://booking/groovyScripts/BookingBatch.groovy" invoke="BookingBatch" />-->
		<event type="service"  invoke="auditingStuBatchList"/>
        <response name="success" type="request-redirect-noparam" value="FindStuBatch"/>  
    </request-map>
	
	<request-map uri="BookingAttendanceManange">  
		<security auth="true"  https="true"/>  
		<response name="success" type="view" value="BookingAttendanceManange"/>
	</request-map> 
	<request-map uri="EditBookingAttendance">  
		<security auth="true"  https="true"/>  
		<event type="service"  invoke="editBookingAttendance"/>
		<response name="success" type="request-redirect-noparam" value="BookingAttendanceManange"/>
	</request-map> 
	<request-map uri="resetPasswordForStudent">  
		<security auth="true"  https="true"/>  
		<event type="service"  invoke="resetPassword"/>
		<response name="success" type="request-redirect-noparam" value="FindStudent"/>
	</request-map> 
	<request-map uri="resetPasswordForAdmin">  
		<security auth="true"  https="true"/>  
		<event type="service"  invoke="resetPassword"/>
		<response name="success" type="request-redirect-noparam" value="FindStudent"/>
	</request-map> 
	
	
    <!-- View Mappings -->
	<view-map name="main" type="screen" page="component://booking/widget/booking/BookingScreens.xml#main"/>
    <view-map name="FindStudent" type="screen" page="component://booking/widget/booking/StudentScreens.xml#FindStudent"/>
	<view-map name="EditStudent" type="screen" page="component://booking/widget/booking/StudentScreens.xml#EditStudent"/>
	<view-map name="LookupStudent" type="screen" page="component://booking/widget/booking/StudentScreens.xml#LookupStudent"/>
	<view-map name="ImportStudentsPage" type="screen" page="component://booking/widget/booking/StudentScreens.xml#ImportStudentsPage"/>

	
	<view-map name="FindTeacher" type="screen" page="component://booking/widget/booking/TeacherScreens.xml#FindTeacher"/>
	<view-map name="EditTeacher" type="screen" page="component://booking/widget/booking/TeacherScreens.xml#EditTeacher"/>
	<view-map name="LookupTeacher" type="screen" page="component://booking/widget/booking/TeacherScreens.xml#LookupTeacher"/>
	
	<view-map name="FindAdmin" type="screen" page="component://booking/widget/booking/AdminScreens.xml#FindAdmin"/>
	<view-map name="EditAdmin" type="screen" page="component://booking/widget/booking/AdminScreens.xml#EditAdmin"/>
	
	<view-map name="FindTerm" type="screen" page="component://booking/widget/booking/TermScreens.xml#FindTerm"/>
	<view-map name="EditTerm" type="screen" page="component://booking/widget/booking/TermScreens.xml#EditTerm"/>
	<view-map name="LookupTerm" type="screen" page="component://booking/widget/booking/TermScreens.xml#LookupTerm"/>
	
	<view-map name="FindCourse" type="screen" page="component://booking/widget/booking/CourseScreens.xml#FindCourse"/>
	<view-map name="EditCourse" type="screen" page="component://booking/widget/booking/CourseScreens.xml#EditCourse"/>
	<view-map name="LookupCourse" type="screen" page="component://booking/widget/booking/CourseScreens.xml#LookupCourse"/>
	
	<view-map name="FindLabProject" type="screen" page="component://booking/widget/booking/LabProjectScreens.xml#FindLabProject"/>
	<view-map name="EditLabProject" type="screen" page="component://booking/widget/booking/LabProjectScreens.xml#EditLabProject"/>
	<view-map name="LookupLabProject" type="screen" page="component://booking/widget/booking/LabProjectScreens.xml#LookupLabProject"/>
	
	<view-map name="FindLabProjectBatch" type="screen" page="component://booking/widget/booking/LabProjectBatchScreens.xml#FindLabProjectBatch"/>
	<view-map name="EditLabProjectBatch" type="screen" page="component://booking/widget/booking/LabProjectBatchScreens.xml#EditLabProjectBatch"/>
	<view-map name="LookupLabProjectBatch" type="screen" page="component://booking/widget/booking/LabProjectBatchScreens.xml#LookupLabProjectBatch"/>
	
	
	<view-map name="FindStuBatch" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#FindStuBatch"/>
	<view-map name="EditStuBatch" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#EditStuBatch"/>
	<view-map name="AuditingStuBatch" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#AuditingStuBatch"/>
	<view-map name="FindBatchForStudent" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#FindBatchForStudent"/>
	<view-map name="FindBookingInReview" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#FindBookingInReview"/>
	<view-map name="FindMyBooking" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#FindMyBooking"/>
	<view-map name="EditAuditingResult" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#EditAuditingResult"/>	
	<view-map name="BookingAttendanceManange" type="screen" page="component://booking/widget/booking/StuBatchScreens.xml#BookingAttendanceManange"/>
</site-conf>

services.xml

<?xml version="1.0" encoding="UTF-8" ?>

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Booking Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>
	<!--Student-->
	<service name="createStudent" default-entity-name="Student" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a Student</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateStudent" default-entity-name="Student" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a Student</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteStudent" default-entity-name="Student" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a Student</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--Teacher-->
	<service name="createTeacher" default-entity-name="Teacher" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a Teacher</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateTeacher" default-entity-name="Teacher" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a Teacher</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteTeacher" default-entity-name="Teacher" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a Teacher</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--Admin-->
	<service name="createAdmin" default-entity-name="Admin" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a Admin</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateAdmin" default-entity-name="Admin" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a Admin</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteAdmin" default-entity-name="Admin" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a Admin</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--Term-->
	<service name="createTerm" default-entity-name="Term" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a Term</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
		<override name="beginTime" optional="false"/>		
	</service>  
	<service name="updateTerm" default-entity-name="Term" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a Term</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
		<!--<override name="endTime" optional="false"/>-->
	</service>  
	<service name="deleteTerm" default-entity-name="Term" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a Term</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--Course-->
	<service name="createCourse" default-entity-name="Course" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a Course</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateCourse" default-entity-name="Course" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a Course</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteCourse" default-entity-name="Course" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a Course</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--LabProject-->
	<service name="createLabProject" default-entity-name="LabProject" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a LabProject</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateLabProject" default-entity-name="LabProject" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a LabProject</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteLabProject" default-entity-name="LabProject" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a LabProject</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	<!--LabProjectBatch-->
	<service name="createLabProjectBatch" default-entity-name="LabProjectBatch" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a LabProjectBatch</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateLabProjectBatch" default-entity-name="LabProjectBatch" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a LabProjectBatch</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteLabProjectBatch" default-entity-name="LabProjectBatch" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a LabProjectBatch</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service> 

	<!--StuBatch-->
	<service name="createStuBatch" default-entity-name="StuBatch" engine="entity-auto"  invoke="create" auth="true">  
		<description>Create a StuBatch</description>  
		<auto-attributes include="pk" mode="INOUT" optional="true"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/> 
	</service>  
	<service name="updateStuBatch" default-entity-name="StuBatch" engine="entity-auto" 	invoke="update" auth="true">  
		<description>Update a StuBatch</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
		<auto-attributes include="nonpk" mode="IN" optional="true"/>  
	</service>  
	<service name="deleteStuBatch" default-entity-name="StuBatch" engine="entity-auto"  invoke="delete" auth="true">  
		<description>Delete a StuBatch</description>  
		<auto-attributes include="pk" mode="IN" optional="false"/>  
	</service>  
	
	<service name="bookingBatchGroovy" engine="groovy" location="component://booking/groovyScripts/BookingBatch.groovy" invoke="bookingBatch">
        <description>Test Groovy Script Service</description>
        <attribute name="batchId" type="String" mode="IN" optional="false"/>
        <attribute name="result" type="String" mode="OUT"/>
		<attribute name="proName" type="String" mode="IN" optional="true"/>
    </service>
	
	<service name="auditingStuBatchList" engine="groovy" location="component://booking/groovyScripts/BookingBatch.groovy" invoke="auditingStuBatchList">
        <description>Test Groovy Script Service</description>
        <attribute name="stuBatchIds" type="List" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="IN" optional="true"/>
		<attribute name="reason" type="String" mode="IN" optional="true"/>
		<!--<attribute name="resultMsg" type="String" mode="OUT"/>-->
    </service>
	<service name="editBookingAttendance" engine="groovy" location="component://booking/groovyScripts/BookingBatch.groovy" invoke="editBookingAttendance">
        <description>批量考勤确认</description>
        <attribute name="stuBatchIds" type="List" mode="IN" optional="true"/>
        <attribute name="attendance" type="String" mode="IN" optional="true"/>
		<!--<attribute name="resultMsg" type="String" mode="OUT"/>-->
    </service>
	
	<service name="addUserLogin" engine="groovy" location="component://booking/groovyScripts/UserLogin.groovy" invoke="addUserLogin">
        <description>新增登录账户</description>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/>
        <attribute name="name" type="String" mode="IN" optional="true"/>
		<attribute name="role" type="String" mode="IN" optional="true"/>
		<attribute name="result" type="String" mode="OUT"/>
    </service>
	<service name="resetPassword" engine="groovy" location="component://booking/groovyScripts/UserLogin.groovy" invoke="resetPassword">
        <description>重置账户密码</description>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/>
		<attribute name="result" type="String" mode="OUT"/>
    </service>
	
	<service name="deleteUserLogin" engine="groovy" location="component://booking/groovyScripts/UserLogin.groovy" invoke="deleteUserLogin">
        <description>删除账户</description>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/>
		<attribute name="result" type="String" mode="OUT"/>
    </service>
	<service name="updateUserLoginName" engine="groovy" location="component://booking/groovyScripts/UserLogin.groovy" invoke="updateUserLoginName">
        <description>修改账户名称</description>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/>
		<attribute name="firstname" type="String" mode="IN" optional="true"/>
		<attribute name="result" type="String" mode="OUT"/>
    </service>
	<service name="importStudents" engine="groovy" location="component://booking/groovyScripts/UserLogin.groovy" invoke="importStudents">
        <description>批量导入学生信息</description>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/>
		<attribute name="result" type="String" mode="OUT"/>
    </service>
	
</services>

secas.xml

<?xml version="1.0" encoding="UTF-8"?>

<service-eca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/service-eca.xsd">
   <!--
    <eca service="createStudent" event="commit">
		<set field-name="userLoginId" value="$(stuId)"/>
		<set field-name="userLoginId" env-name="stuId" />
		<set field-name="role" env-name="student" />
        <action service="resetPassword" mode="sync"/>
    </eca>
   -->
</service-eca>
eecas.xml

<?xml version="1.0" encoding="UTF-8"?>

<entity-eca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entity-eca.xsd">
    <!-- Inventory Issue ECAs for Immediately Fulfilled Booking -->
    <eca entity="Student" operation="create" event="return">
        <set field-name="userLoginId" env-name="stuId" />
		<set field-name="role" value="bookingStudent" />
        <action service="addUserLogin" mode="sync"/>
    </eca>
	
	<eca entity="Student" operation="remove" event="return">
        <set field-name="userLoginId" env-name="stuId" />
        <action service="deleteUserLogin" mode="sync"/>
    </eca>
	
	<eca entity="Student" operation="store" event="return">
        <set field-name="userLoginId" env-name="stuId" />
		<set field-name="firstname" env-name="name" />
        <action service="updateUserLoginName" mode="sync"/>
    </eca>
	
	<eca entity="Admin" operation="create" event="return">
        <set field-name="userLoginId" env-name="adminId" />
		<set field-name="role" value="bookingAdmin" />
        <action service="addUserLogin" mode="sync"/>
    </eca>
	
	<eca entity="Admin" operation="remove" event="return">
        <set field-name="userLoginId" env-name="adminId" />
        <action service="deleteUserLogin" mode="sync"/>
    </eca>
	<eca entity="Admin" operation="store" event="return">
        <set field-name="userLoginId" env-name="adminId" />
		<set field-name="firstname" env-name="name" />
        <action service="updateUserLoginName" mode="sync"/>
    </eca>
</entity-eca>

entitymodel.xml

<?xml version="1.0" encoding="UTF-8"?>

<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd">
    <!-- ========================================================= -->
    <!-- ======================== Defaults ======================= -->
    <!-- ========================================================= -->
    <title>Entity of an Apache OFBiz Component</title>
    <description>None</description>
    <version>1.0</version>
    <default-resource-name>BookingEntityLabels</default-resource-name>

	<entity entity-name="Student" package-name="org.apache.ofbiz.booking.student" title="学生表">
        <field name="stuId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="name" type="name"></field>
        <field name="stuNumber" type="name"></field>
		<field name="class" type="name"></field>
		<field name="sex" type="name"></field>
        <prim-key field="stuId"/>
    </entity>
	<entity entity-name="Teacher" package-name="org.apache.ofbiz.booking.teacher" title="教师表">
        <field name="tchId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="name" type="name"></field>
        <field name="deptName" type="name"></field>
		<field name="sex" type="name"></field>
        <prim-key field="tchId"/>
    </entity>
	<entity entity-name="Admin" package-name="org.apache.ofbiz.booking.admin" title="管理员表">
        <field name="adminId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="name" type="name"></field>
        <field name="deptName" type="name"></field>
		<field name="sex" type="name"></field>
        <prim-key field="adminId"/>
    </entity>
    <entity entity-name="Term" package-name="org.apache.ofbiz.booking.term" title="学期表">
        <field name="termName" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="beginTime" type="date"></field>
        <field name="endTime" type="date"></field>
		<field name="used" type="name"></field>
        <prim-key field="termName"/>
    </entity>
	<entity entity-name="Course" package-name="org.apache.ofbiz.booking.course" title="课程表">
        <field name="courseId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="courseName" type="name"></field>
        <prim-key field="courseId"/>
    </entity>
	<entity entity-name="LabProject" package-name="org.apache.ofbiz.booking.project" title="实验项目表">
        <field name="proId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="proName" type="name"></field>
		<field name="courseId" type="id-ne"></field>
		<field name="termName" type="id-ne"></field>
        <prim-key field="proId"/>
		<relation type="one" fk-name="FK_LabProject_Course" rel-entity-name="Course">
			<key-map field-name="courseId"/>
		</relation>
		<relation type="one" fk-name="FK_LabProject_Term" rel-entity-name="Term">
			<key-map field-name="termName"/>
		</relation>
    </entity>
	<entity entity-name="LabProjectBatch" package-name="org.apache.ofbiz.booking.projectbatch" title="实验项目批次表">
        <field name="batchId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="proId" type="id-ne"></field>
		<field name="tchId" type="id-ne"></field>
		<field name="address" type="description"></field>
		<field name="capacity" type="numeric"></field>
		<field name="date" type="date"></field>
		<field name="classNO" type="name"></field>
		<field name="asured" type="name"></field>
        <prim-key field="batchId"/>
		<relation type="one" fk-name="FK_ProjectBatch_LabProject" rel-entity-name="LabProject">
			<key-map field-name="proId"/>
		</relation>
		<relation type="one" fk-name="FK_ProjectBatch_Teacher" rel-entity-name="Teacher">
			<key-map field-name="tchId"/>
		</relation>
    </entity>
	<entity entity-name="StuBatch" package-name="org.apache.ofbiz.booking.stubatch" title="学生预约实验项目批次申请表">
        <field name="stuId" type="id-ne"><description>primary sequenced ID</description></field>
        <field name="batchId" type="id-ne"></field>
		<field name="date" type="date-time"></field>
		<field name="result" type="name"></field>
		<field name="reason" type="long-varchar"></field>
		<field name="attendance" type="name"></field>
        <prim-key field="stuId"/>
		<prim-key field="batchId"/>
		<prim-key field="date"/>
		<relation type="one" fk-name="FK_StuBatch_Student" rel-entity-name="Student">
			<key-map field-name="stuId"/>
		</relation>
		<relation type="one" fk-name="FK_StuBatch_LabProjectBatch" rel-entity-name="LabProjectBatch">
			<key-map field-name="batchId"/>
		</relation>
    </entity>
    
</entitymodel>

entitymodel_view.xml

<?xml version="1.0" encoding="UTF-8"?>


<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd">
  <!-- ========================================================= -->
  <!-- ======================== Defaults ======================= -->
  <!-- ========================================================= -->
    <title>Entity of an Apache OFBiz Component</title>
    <description>None</description>
    <version>1.0</version>

  <!-- ========================================================= -->
  <!-- org.apache.ofbiz.booking.LabProject -->
  <!-- ========================================================= -->

    <view-entity entity-name="LabProjectAndCourseAndTerm"
            package-name="org.apache.ofbiz.booking.labproject"
            never-cache="true"
            title="LabProject And Course And Term View Entity">
      <member-entity entity-alias="LP" entity-name="LabProject"/>
      <member-entity entity-alias="CS" entity-name="Course"/>
	  <member-entity entity-alias="TM" entity-name="Term"/>
      <alias entity-alias="LP" name="proId"/>
      <alias entity-alias="LP" name="proName"/>
      <alias entity-alias="LP" name="courseId" />
      <alias entity-alias="LP" name="termName"/>
      <alias entity-alias="CS" name="courseName"/>
      <alias entity-alias="TM" name="beginTime"/>
	  <alias entity-alias="TM" name="endTime"/>
	  <alias entity-alias="TM" name="used"/>
      <view-link entity-alias="LP" rel-entity-alias="CS" rel-optional="true">
        <key-map field-name="courseId"/>
      </view-link>
	  <view-link entity-alias="LP" rel-entity-alias="TM" rel-optional="true">
        <key-map field-name="termName"/>
      </view-link>
	  <relation type="one-nofk" rel-entity-name="Course" >
        <key-map field-name="courseId"/>
      </relation>
    </view-entity>
	
	
	<view-entity entity-name="StuBatchAndBookingPassNums"
            package-name="org.apache.ofbiz.booking.stubatch"
            never-cache="true"
            title="学生预约审核通过统计信息">
	  <member-entity entity-alias="SB" entity-name="StuBatch"/>
      
	  <alias name="batchId" entity-alias="SB" group-by="true"/>
	  
	  <alias entity-alias="SB" name="bookingPassNums" function="count" field="stuId" />
	  <entity-condition>
        <condition-expr entity-alias="SB" field-name="result" operator="equals" value="Y"/>
	  </entity-condition>
    </view-entity>
	
	<view-entity entity-name="StuBatchAndBookingTotalNums"
            package-name="org.apache.ofbiz.booking.stubatch"
            never-cache="true"
            title="项目批准预约学生总数统计">
	  <member-entity entity-alias="SB" entity-name="StuBatch"/>
	  <alias name="batchId" entity-alias="SB" group-by="true"/>
	  <alias entity-alias="SB" name="bookingTotalNums" function="count" field="stuId" />
    </view-entity>
	
	
	<view-entity entity-name="LabProjectBatchAndLabProjectAndTeacher"
            package-name="org.apache.ofbiz.booking.labproject"
            never-cache="true"
            title="LabProject And Course And Term View Entity">
      <member-entity entity-alias="LPB" entity-name="LabProjectBatch"/>
      <member-entity entity-alias="LP" entity-name="LabProject"/>
	  <member-entity entity-alias="T" entity-name="Teacher"/>
	  <member-entity entity-alias="CS" entity-name="Course"/>
	  <member-entity entity-alias="BTN" entity-name="StuBatchAndBookingTotalNums"/>
	  <member-entity entity-alias="BPN" entity-name="StuBatchAndBookingPassNums"/>
	  
	  <alias name="batchId" entity-alias="LPB" />
	  <alias name="proId" entity-alias="LPB" />
	  <alias name="tchId" entity-alias="LPB"/>
	  <alias name="address" entity-alias="LPB" />
	  <alias name="capacity" entity-alias="LPB"/>
	  <alias name="date" entity-alias="LPB" />
	  <alias name="classNO" entity-alias="LPB" />
	  <alias name="asured" entity-alias="LPB"/>
		
      <alias entity-alias="LP" name="proName"/>
      <alias entity-alias="LP" name="courseId" />
	  
      <alias entity-alias="LP" name="termName"/>
      <alias entity-alias="CS" name="courseName"/>
      <alias entity-alias="T" name="tchName" field="name"/>
	  
	  <alias entity-alias="BTN" name="bookingTotalNums" />
	  <alias entity-alias="BPN" name="bookingPassNums" />

      <view-link entity-alias="LPB" rel-entity-alias="LP" rel-optional="true">
        <key-map field-name="proId"/>
      </view-link>
	  <view-link entity-alias="LP" rel-entity-alias="CS" rel-optional="true">
        <key-map field-name="courseId"/>
      </view-link>
	  <view-link entity-alias="LPB" rel-entity-alias="T" rel-optional="true">
        <key-map field-name="tchId"/>
      </view-link>
	  
	  <view-link entity-alias="LPB" rel-entity-alias="BTN" rel-optional="true">
        <key-map field-name="batchId"/>
      </view-link>
	  <view-link entity-alias="LPB" rel-entity-alias="BPN" rel-optional="true">
        <key-map field-name="batchId"/>
      </view-link>
	  
	  <relation type="one-nofk" rel-entity-name="LabProject">
		<key-map field-name="proId"/>
	  </relation>
	  <relation type="one-nofk" rel-entity-name="Teacher">
		<key-map field-name="tchId"/>
	  </relation>
    </view-entity>
	
	<view-entity entity-name="StuBatchAndLabProBach"
            package-name="org.apache.ofbiz.booking.labproject"
            never-cache="true"
            title="LabProject And Course And Term View Entity">
      <member-entity entity-alias="SB" entity-name="StuBatch"/>
      <member-entity entity-alias="LP" entity-name="LabProjectBatchAndLabProjectAndTeacher"/>
	  <alias-all entity-alias="LP"/>
	  <alias name="stuId" entity-alias="SB" />
	  
	  <alias name="applyDate" entity-alias="SB" field="date"></alias>
	  <alias name="result" entity-alias="SB"></alias>
	  <alias name="reason" entity-alias="SB"></alias>
	  <alias name="attendance" entity-alias="SB"></alias>
		
	  
	  <view-link entity-alias="SB" rel-entity-alias="LP" rel-optional="true">
        <key-map field-name="batchId"/>
      </view-link>
	  
	  <relation type="one-nofk" rel-entity-name="Student">
		<key-map field-name="stuId"/>
	  </relation>
	  <relation type="one-nofk" rel-entity-name="LabProjectBatchAndLabProjectAndTeacher">
		<key-map field-name="batchId"/>
	  </relation>
    </view-entity>
	
	
	
</entitymodel>

BookingUiLabels.xml

<?xml version="1.0" encoding="UTF-8"?>

<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
	<property key="BookingCompanyName">
        <value xml:lang="en">xnxy</value>
        <value xml:lang="zh">湘南学院</value>
    </property>
	
	<property key="BookingResetPassword">
        <value xml:lang="en">Reset Password</value>
        <value xml:lang="zh">重置密码</value>
    </property>
	<!--菜单国际化-->
    <property key="BookingApplication">
        <value xml:lang="en">Booking Application</value>
        <value xml:lang="zh">预约管理应用</value>
    </property>
	<property key="StuInfoManange">
        <value xml:lang="en">StuInfoManange</value>
        <value xml:lang="zh">学生信息管理</value>
    </property>
	<property key="TchInfoManange">
        <value xml:lang="en">TchInfoManange</value>
        <value xml:lang="zh">教师信息管理</value>
    </property>
	<property key="AdminManange">
        <value xml:lang="en">AdminManange</value>
        <value xml:lang="zh">管理员信息管理</value>
    </property>
	<property key="LabInfoManange">
        <value xml:lang="en">LabInfoManange</value>
        <value xml:lang="zh">实验室管理</value>
    </property>
	<property key="TermManange">
        <value xml:lang="en">TermManange</value>
        <value xml:lang="zh">学期管理</value>
    </property>
	<property key="LabProjectManange">
        <value xml:lang="en">LabProjectManange</value>
        <value xml:lang="zh">实验项目管理</value>
    </property>
	<property key="LabProjectBatchManange">
        <value xml:lang="en">LabProjectBatchManange</value>
        <value xml:lang="zh">实验项目批次管理</value>
    </property>
	<property key="CourseManange">
        <value xml:lang="en">CourseManange</value>
        <value xml:lang="zh">课程管理</value>
    </property>
	<property key="StuBatchManange">
        <value xml:lang="en">StuBatchManange</value>
        <value xml:lang="zh">学生预约管理</value>
    </property>
	<property key="BookingAttendanceManange">
        <value xml:lang="en">Booking Attendance Manange</value>
        <value xml:lang="zh">考勤管理</value>
    </property>
	
	<property key="BookingStuBatchAttendance">
        <value xml:lang="en">BookingStuBatchAttendance</value>
        <value xml:lang="zh">考勤情况</value>
    </property>
	<property key="BookingStuBatchAttendanceY">
        <value xml:lang="en">BookingStuBatchAttendanceY</value>
        <value xml:lang="zh">签到</value>
    </property>
	<property key="BookingStuBatchAttendanceN">
        <value xml:lang="en">BookingStuBatchAttendanceN</value>
        <value xml:lang="zh">未签到</value>
    </property>
	<property key="BookingStuBatchAttendanceNULL">
        <value xml:lang="en">BookingStuBatchAttendanceNULL</value>
        <value xml:lang="zh">待考勤</value>
    </property>
	
	<property key="EditBookingAttendanceY">
        <value xml:lang="en">EditBookingAttendanceY</value>
        <value xml:lang="zh">批量签到确认</value>
    </property>
	<property key="EditBookingAttendanceN">
        <value xml:lang="en">EditBookingAttendanceN</value>
        <value xml:lang="zh">批量缺勤确认</value>
    </property>
	
	
	
	<property key="BookingLab">
        <value xml:lang="en">BookingLab</value>
        <value xml:lang="zh">预约实验室</value>
    </property>
	<property key="InReview">
        <value xml:lang="en">InReview</value>
        <value xml:lang="zh">待审核的预约</value>
    </property>
	<property key="MyBooking">
        <value xml:lang="en">MyBooking</value>
        <value xml:lang="zh">我的预约</value>
    </property>
	
	<property key="LabProjectBatchConfirm">
        <value xml:lang="en">LabProjectBatchConfirm</value>
        <value xml:lang="zh">实验项目批次确认</value>
    </property>
	<property key="LabProjectBatchCancel">
        <value xml:lang="en">LabProjectBatchCancel</value>
        <value xml:lang="zh">实验项目批次取消</value>
    </property>
	<property key="FindBookingStuInfo">
        <value xml:lang="en">FindBookingStuInfo</value>
        <value xml:lang="zh">浏览预约学生信息</value>
    </property>
	<property key="FindCourseTable">
        <value xml:lang="en">FindCourseTable</value>
        <value xml:lang="zh">浏览实验课课表</value>
    </property>
	<!--菜单国际化-->
	<property key="BookingSex">
        <value xml:lang="en">Sex</value>
        <value xml:lang="zh">性别</value>
    </property>
	<property key="BookingName">
        <value xml:lang="en">name</value>
        <value xml:lang="zh">姓名</value>
    </property>
	
	<!--学期管理模块-->
	<property key="EditTerm">
        <value xml:lang="en">Create Term</value>
        <value xml:lang="zh">添加学期</value>
    </property>
	<property key="TermTermName">
        <value xml:lang="en">TermName</value>
        <value xml:lang="zh">学期名称</value>
    </property>
	<property key="TermBeginTime">
        <value xml:lang="en">BeginTime</value>
        <value xml:lang="zh">开始日期</value>
    </property>
	<property key="TermEndTime">
        <value xml:lang="en">EndTime</value>
        <value xml:lang="zh">终止日期</value>
    </property>
	<property key="TermUsed">
        <value xml:lang="en">Used</value>
        <value xml:lang="zh">是否可用</value>
    </property>
	<property key="PageTitleLookupTerm">
        <value xml:lang="en">Find Term</value>
        <value xml:lang="zh">查找学期</value>
    </property>
	
	<property key="BookingNotModification">
        <value xml:lang="en">BookingNotModification</value>
        <value xml:lang="zh">不能修改</value>
    </property>
	
	<!--学生管理模块-->
	<property key="EditStudent">
        <value xml:lang="en">Create Student</value>
        <value xml:lang="zh">添加学生</value>
    </property>
	<property key="ImportStudents">
        <value xml:lang="en">ImportStudents</value>
        <value xml:lang="zh">批量导入学生</value>
    </property>
	<property key="BookingDownloadStudentTemplet">
        <value xml:lang="en">Download Templet</value>
        <value xml:lang="zh">下载模板</value>
    </property>
	
	<property key="BookingStudentStuId">
        <value xml:lang="en">Student Id</value>
        <value xml:lang="zh">学生标识ID</value>
    </property>
	<property key="BookingStudentStuNumber">
        <value xml:lang="en">stuNumber</value>
        <value xml:lang="zh">学号</value>
    </property>
	<property key="BookingStudentClass">
        <value xml:lang="en">class</value>
        <value xml:lang="zh">班级</value>
    </property>
	<property key="BookingStudentName">
        <value xml:lang="en">Student Name</value>
        <value xml:lang="zh">学生姓名</value>
    </property>
	
	<!--教师管理模块-->
	<property key="EditTeacher">
        <value xml:lang="en">Create Teacher</value>
        <value xml:lang="zh">添加教师</value>
    </property>
	<property key="BookingTeacherTchId">
        <value xml:lang="en">Teacher Id</value>
        <value xml:lang="zh">教师标识ID</value>
    </property>
	<property key="BookingTeacherDeptName">
        <value xml:lang="en">Dept Name</value>
        <value xml:lang="zh">所属学院</value>
    </property>
	<property key="BookingTeacherName">
        <value xml:lang="en">Teacher Name</value>
        <value xml:lang="zh">教师姓名</value>
    </property>
	<property key="PageTitleLookupTeacher">
        <value xml:lang="en">Lookup Teacher</value>
        <value xml:lang="zh">查找教师</value>
    </property>
	
	<!--管理员信息管理模块-->
	<property key="EditAdmin">
        <value xml:lang="en">Create Admin</value>
        <value xml:lang="zh">添加管理员</value>
    </property>
	<property key="BookingAdminId">
        <value xml:lang="en">Admin Id</value>
        <value xml:lang="zh">管理员标识ID</value>
    </property>
	<property key="BookingAdminDeptName">
        <value xml:lang="en">Dept Name</value>
        <value xml:lang="zh">所属学院</value>
    </property>
	<property key="BookingAdminName">
        <value xml:lang="en">Admin Name</value>
        <value xml:lang="zh">管理员姓名</value>
    </property>

	
	<!--课程管理模块-->
	<property key="BookingCourseId">
        <value xml:lang="en">Course Id</value>
        <value xml:lang="zh">课程ID</value>
    </property>
	<property key="EditCourse">
        <value xml:lang="en">Create Course</value>
        <value xml:lang="zh">添加课程</value>
    </property>
	<property key="BookingCourseName">
        <value xml:lang="en">Course Name</value>
        <value xml:lang="zh">课程名称</value>
    </property>
	
	<property key="PageTitleLookupCourse">
        <value xml:lang="en">Find Course</value>
        <value xml:lang="zh">查找课程</value>
    </property>
	
	<!--实验项目管理模块-->
	<property key="EditLabProject">
        <value xml:lang="en">LabProject</value>
        <value xml:lang="zh">添加实验项目</value>
    </property>
	<property key="BookingLabProjectId">
        <value xml:lang="en">LabProject ID</value>
        <value xml:lang="zh">实验项目Id</value>
    </property>
	<property key="BookingLabProjectName">
        <value xml:lang="en">LabProject Name</value>
        <value xml:lang="zh">实验项目名称</value>
    </property>
	<property key="PageTitleLookupLabProject">
        <value xml:lang="en">Lookup LabProject</value>
        <value xml:lang="zh">查找实验项目</value>
    </property>
	<!--实验项目批次管理模块-->
	<property key="EditLabProjectBatch">
        <value xml:lang="en">Create LabProjectBatch</value>
        <value xml:lang="zh">添加实验项目批次</value>
    </property>
	<property key="BookingLabProjectBatchId">
        <value xml:lang="en">LabProjectBatch ID</value>
        <value xml:lang="zh">实验项目批次Id</value>
    </property>
	<property key="BookingLabProjectBatchAddress">
        <value xml:lang="en">Address</value>
        <value xml:lang="zh">实验地点</value>
    </property>
	<property key="BookingLabProjectBatchCapacity">
        <value xml:lang="en">Capacity</value>
        <value xml:lang="zh">容纳人数</value>
    </property>
	<property key="BookingLabProjectBatchDate">
        <value xml:lang="en">LabProject Date</value>
        <value xml:lang="zh">实验日期</value>
    </property>
	<property key="BookingLabProjectBatchClassNO">
        <value xml:lang="en">Class NO.</value>
        <value xml:lang="zh">节次</value>
    </property>
	<property key="BookingLabProjectBatchAsured">
        <value xml:lang="en">Asured</value>
        <value xml:lang="zh">是否确认</value>
    </property>
	<property key="BookingTotalNums">
        <value xml:lang="en">total nums</value>
        <value xml:lang="zh">已预约人数</value>
    </property>
	<property key="BookingPassNums">
        <value xml:lang="en">pass nums</value>
        <value xml:lang="zh">预约通过人数</value>
    </property>
	<!--学生预约申请管理模块-->
	<property key="BookingStuBatchAuditing">
        <value xml:lang="en">Auditing</value>
        <value xml:lang="zh">审核</value>
    </property>
	<property key="BookingStuBatchDate">
        <value xml:lang="en">Apply Time</value>
        <value xml:lang="zh">申请时间</value>
    </property>
	<property key="BookingStuBatchResult">
        <value xml:lang="en">Apply Time</value>
        <value xml:lang="zh">审核结果</value>
    </property>
	<property key="BookingStuBatchReason">
        <value xml:lang="en">Reason</value>
        <value xml:lang="zh">原因</value>
    </property>
	<property key="BookingStuBatchResultY">
        <value xml:lang="en">pass</value>
        <value xml:lang="zh">通过</value>
    </property>
	<property key="BookingStuBatchResultN">
        <value xml:lang="en">refuse</value>
        <value xml:lang="zh">拒绝</value>
    </property>
	<property key="BookingStuBatchResultNULL">
        <value xml:lang="en"></value>
        <value xml:lang="zh">审核中</value>
    </property>
	<property key="BookingBooking">
        <value xml:lang="en">Booking</value>
        <value xml:lang="zh">预约</value>
    </property>
	<property key="BookingBookingSuccess">
        <value xml:lang="en">Booking Success</value>
        <value xml:lang="zh">预约成功</value>
    </property>
	<property key="BookingBookingCancel">
        <value xml:lang="en">Booking Cancel</value>
        <value xml:lang="zh">取消预约</value>
    </property>
	<property key="AuditingStuBatchList">
        <value xml:lang="en">Auditing Batch</value>
        <value xml:lang="zh">批量审核</value>
    </property>
	
	
	
</resource>

		

CommonScreens.xml

<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Widget-Screen" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <screen name="main-decorator">
        <section>
            <actions>
                <!-- base/top/specific map first, then more common map added for shared labels -->
                <property-map resource="BookingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>

                <set field="layoutSettings.companyName" from-field="uiLabelMap.BookingCompanyName" global="true"/>
                <set field="layoutSettings.companySubtitle" from-field="uiLabelMap.BookingCompanySubtitle" global="true"/>

  
                <set field="activeApp" value="booking" global="true"/>
                <set field="applicationMenuName" value="BookingAppBar" global="true"/>
                <set field="applicationMenuLocation" value="component://booking/widget/booking/BookingMenus.xml" global="true"/>
                <set field="applicationTitle" value="${uiLabelMap.BookingApplication}" global="true"/>
            </actions>
            <widgets>
                <section>
                    <condition>
                        <if-has-permission permission="BOOKING" action="_VIEW"/>
                    </condition>
                    <actions>
                        <!-- <set field="layoutSettings.javaScripts[]" value="/example/js/ExamplePushNotifications.js" global="true"/>-->
                    </actions>
                </section>
                <include-screen name="ApplicationDecorator" location="component://commonext/widget/CommonScreens.xml"/>
            </widgets>
        </section>
    </screen>
	<screen name="CommonBookingDecorator">
        <section>
            <widgets>
                <decorator-screen name="main-decorator">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-has-permission permission="BOOKING" action="_VIEW"/>
                            </condition>
                            <widgets>
                                <decorator-section-include name="body"/>
                            </widgets>
                            <fail-widgets>
                                <label style="h3">${uiLabelMap.BookingViewPermissionError}</label>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
	<screen name="FindScreenDecorator">
        <section>
            <widgets>
                <section>
                    <condition>
                        <if-empty field="titleProperty"/>
                    </condition>
                    <widgets>
                        <container style="page-title"><label text="${title}"></label></container>
                    </widgets>
                    <fail-widgets>
                        <container style="page-title"><label text="${uiLabelMap[titleProperty]}"></label></container>
                    </fail-widgets>
                </section>
                <decorator-section-include name="menu-bar"/>
                <container style="clear"/>
                <screenlet id="searchOptions" name="findScreenlet" collapsible="true" title="${uiLabelMap.CommonSearchOptions}">
                    <container id="search-options">
                        <decorator-section-include name="search-options" />
                    </container>
                </screenlet>
                <screenlet padded="false">
                    <label style="h3" text="${uiLabelMap.CommonSearchResults}"/>
                    <container id="search-results">
                        <decorator-section-include name="search-results"/>
                    </container>
                </screenlet>
            </widgets>
        </section>
    </screen>
	
	<screen name="FindNoSearchScreenDecorator">
        <section>
            <widgets>
                <section>
                    <condition>
                        <if-empty field="titleProperty"/>
                    </condition>
                    <widgets>
                        <container style="page-title"><label text="${title}"></label></container>
                    </widgets>
                    <fail-widgets>
                        <container style="page-title"><label text="${uiLabelMap[titleProperty]}"></label></container>
                    </fail-widgets>
                </section>
                <decorator-section-include name="menu-bar"/>
                <container style="clear"/>
                <screenlet padded="false">
                    <container id="search-results">
                        <decorator-section-include name="search-results"/>
                    </container>
                </screenlet>
            </widgets>
        </section>
    </screen>
	


</screens>

BookingMenus.xml

<?xml version="1.0" encoding="UTF-8"?>

<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://ofbiz.apache.org/Widget-Menu" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Menu http://ofbiz.apache.org/dtds/widget-menu.xsd">
    <menu name="BookingAppBar" title="${uiLabelMap.BookingApplication}" extends="CommonAppBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
		<!--管理员模块-->
        <menu-item name="StuInfoManange" title="${uiLabelMap.StuInfoManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_StuInfoManange_VIEW"/>
				</or>
            </condition>
            <link target="FindStudent"/>
        </menu-item>
		<menu-item name="TchInfoManange" title="${uiLabelMap.TchInfoManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_TchInfoManange_VIEW"/>
				</or>
            </condition>
            <link target="FindTeacher"/>
        </menu-item>
		<menu-item name="AdminManange" title="${uiLabelMap.AdminManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_AdminManange_VIEW"/>
				</or>
            </condition>
            <link target="FindAdmin"/>
        </menu-item>
		<menu-item name="TermManange" title="${uiLabelMap.TermManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_TermManange_VIEW"/>
				</or>
            </condition>
            <link target="FindTerm"/>
        </menu-item>
		<menu-item name="CourseManange" title="${uiLabelMap.CourseManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_CourseManange_VIEW"/>
				</or>
            </condition>
            <link target="FindCourse"/>
        </menu-item>
		<menu-item name="LabProjectManange" title="${uiLabelMap.LabProjectManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_LabProjectManange_VIEW"/>
				</or>
            </condition>
            <link target="FindLabProject"/>
        </menu-item>
		<menu-item name="LabProjectBatchManange" title="${uiLabelMap.LabProjectBatchManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_LabProjectBatchManange_VIEW"/>
				</or>
            </condition>
            <link target="FindLabProjectBatch"/>
        </menu-item>
		
		<menu-item name="StuBatchManange" title="${uiLabelMap.StuBatchManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_StuBookingManange_VIEW"/>
				</or>
            </condition>
            <link target="FindStuBatch"/>
        </menu-item>
		<menu-item name="BookingAttendanceManange" title="${uiLabelMap.BookingAttendanceManange}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_BookingAttendanceManange_VIEW"/>
				</or>
            </condition>
            <link target="BookingAttendanceManange"/>
        </menu-item>
		<!--学生模块-->
		<menu-item name="BookingLab" title="${uiLabelMap.BookingLab}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_BookingLab_VIEW"/>
				</or>
            </condition>
            <link target="FindBatchForStudent"/>
        </menu-item>
		<menu-item name="InReview" title="${uiLabelMap.InReview}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_InReview_VIEW"/>
				</or>
            </condition>
            <link target="FindBookingInReview"/>
        </menu-item>
		<menu-item name="MyBooking" title="${uiLabelMap.MyBooking}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_MyBooking_VIEW"/>
				</or>
            </condition>
            <link target="FindMyBooking"/>
        </menu-item>
		<!--教师模块-->
		<!--
		<menu-item name="LabProjectBatchConfirm" title="${uiLabelMap.LabProjectBatchConfirm}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_LabProjectBatchConfirm_VIEW"/>
				</or>
            </condition>
            <link target="FindBookedLabProjectBatch"/>
        </menu-item>
		<menu-item name="LabProjectBatchCancel" title="${uiLabelMap.LabProjectBatchCancel}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_LabProjectBatchCancel_VIEW"/>
				</or>
            </condition>
            <link target="FindConfirmedLabProjectBatch"/>
        </menu-item>
		<menu-item name="FindBookingStuInfo" title="${uiLabelMap.FindBookingStuInfo}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_FindBookingStuInfo_VIEW"/>
				</or>
            </condition>
            <link target="FindBookingStuInfo"/>
        </menu-item>
		<menu-item name="FindCourseTable" title="${uiLabelMap.FindCourseTable}">
			<condition>
				<or>
					<if-has-permission permission="BOOKING" action="_ADMIN"/>
					<if-has-permission permission="BOOKING" action="_FindBookingStuInfo_VIEW"/>
				</or>
            </condition>
            <link target="FindCourseTable"/>
        </menu-item>
		-->
    </menu>
</menus>



返回导航页








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值