-
Notifications
You must be signed in to change notification settings - Fork 34
Thiết kế quản lý dữ liệu danh mục
###DataMgt - Quản lý dữ liệu danh mục
####Cấu trúc Entity
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="org.opencps.datamgt">
<author>khoavd</author>
<namespace>datamgt</namespace>
<entity name="DictCollection" local-service="true" remote-service="true"
data-source="opencpsdatasource" table="opencps_dictcollection">
<!-- PK fields -->
<column name="dictCollectionId" type="long" primary="true" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="groupId" type="long" />
<column name="userId" type="long" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="collectionCode" type="String"/>
<column name="collectionName" type="String"/>
<column name="description" type="String"/>
<!-- Order -->
<order by="asc">
<order-column name="collectionName" />
</order>
<!-- Finder methods -->
<finder name="CollectionCode" return-type="DictCollection" unique="true">
<finder-column name="collectionCode" />
</finder>
</entity>
<entity name="DictVersion" local-service="true" remote-service="true"
data-source="opencpsdatasource" table="opencps_dictversion">
<!-- PK fields -->
<column name="dictVersionId" type="long" primary="true" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="groupId" type="long" />
<column name="userId" type="long" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="dictCollectionId" type="long"/>
<column name="version" type="String"/>
<column name="description" type="String"/>
<column name="validatedFrom" type="Date"/>
<column name="validatedTo" type="Date"/>
<column name="issueStatus" type="int"/>
<!-- Order -->
<!-- Finder methods -->
<finder name="DictCollectionId" return-type="Collection">
<finder-column name="dictCollectionId" />
</finder>
<finder name="DictCollectionId_InUse" return-type="DictVersion" where="issueStatus = 1">
<finder-column name="dictCollectionId" />
</finder>
</entity>
<entity name="DictItem" local-service="true" remote-service="true"
data-source="opencpsdatasource" table="opencps_dictitem">
<!-- PK fields -->
<column name="dictItemId" type="long" primary="true" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="groupId" type="long" />
<column name="userId" type="long" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="dictCollectionId" type="long"/>
<column name="itemCode" type="String"/>
<column name="itemName" type="String"/>
<column name="parentItemId" type="long"/>
<column name="treeIndex" type="String"/>
<column name="issueStatus" type="int"/>
<column name="dictVersionId" type="long"/>
<!-- Order -->
<order by="asc">
<order-column name="treeIndex" />
</order>
<!-- Finder methods -->
<finder name="CollectionId_ItemCode" return-type="DictItem" where="issueStatus = 1">
<finder-column name="dictCollectionId" />
<finder-column name="itemCode" />
</finder>
<finder name="DictVersionId" return-type="Collection">
<finder-column name="dictVersionId" />
</finder>
<finder name="DictCollectionId" return-type="Collection">
<finder-column name="dictCollectionId" />
</finder>
<finder name="ParentItemId" return-type="Collection">
<finder-column name="parentItemId" />
</finder>
<finder name="TreeIndex" return-type="Collection">
<finder-column name="parentItemId" comparator="LIKE" />
</finder>
</entity>
<exceptions>
<exception>EmptyDictCollectionName</exception>
<exception>EmptyDictItemName</exception>
<exception>DuplicateCollection</exception>
<exception>DuplicateVersion</exception>
<exception>DuplicateItem</exception>
<exception>OutOfLengthCollectionName</exception>
<exception>OutOfLengthItemName</exception>
<exception>OutOfLengthCollectionDescription</exception>
<exception>OutOfLengthVesionDescription</exception>
<exception>OutOfLengthItemDescription</exception>
</exceptions>
</service-builder>
####File portlet-model-hints.xml
<model-hints>
<hint-collection name="TEXTAREA">
<hint name="display-height">105</hint>
<hint name="display-width">500</hint>
<hint name="max-length">4000</hint>
</hint-collection>
<model name="org.opencps.datamgt.model.DictCollection">
<default-hints>
<hint name="display-width">150</hint>
</default-hints>
<field name="dictCollectionId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
<field name="collectionCode" type="String">
<hint name="max-length">100</hint>
</field>
<field name="collectionName" type="String" localized="true">
<hint name="max-length">255</hint>
</field>
<field name="description" type="String">
<hint-collection name="TEXTAREA" />
</field>
</model>
<model name="org.opencps.datamgt.model.DictItem">
<field name="dictItemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
<field name="dictCollectionId" type="long" />
<field name="itemCode" type="String">
<hint name="max-length">100</hint>
</field>
<field name="itemName" type="String" localized="true">
<hint name="max-length">255</hint>
</field>
<field name="parentItemId" type="long" />
<field name="treeIndex" type="String" />
<field name="issueStatus" type="int" />
<field name="dictVersionId" type="long" />
</model>
<model name="org.opencps.datamgt.model.DictVersion">
<field name="dictVersionId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
<field name="dictCollectionId" type="long" />
<field name="version" type="String" />
<field name="description" type="String">
<hint-collection name="TEXTAREA" />
</field>
<field name="validatedFrom" type="Date" />
<field name="validatedTo" type="Date" />
<field name="issueStatus" type="int" />
</model>
</model-hints>
####Các hàm API
Chức năng quản lý DictCollection
Thêm mới một collection
DictCollection addDictCollection(long userId, String code, String name, String description, ServiceContext)
Xóa một collection
void deleteCollection(DictCollection)
Cập nhật nội dung của một collection
DictCollection updateDictCollection(DictCollection, String code, String name, String description, ServiceContext)
Lấy collection theo id
DictCollection getDictCollection(DictCollection)
Lấy collection theo một một mã collection theo một mã
DictCollection getDictCollection(long groupId, String collectionCode)
Lấy danh sách tất cả các collection hiện diện trong hệ thống
List<DictCollection> getDictCollections()
Lấy danh sách các collection trong một group
List<DictCollection> getDictCollections(long groupId)
Chức năng quản lý DictVersion
Thêm mới version, ở trạng thái drafting, với mỗi collection chỉ có duy nhất 1 version ở trạng thái drafting
DictVersion addDictVersion(long userId, DictCollection dictCollection, String version, String description, Date validatedFrom, Date validatedTo)
Xóa một version
void deleteDictVersion(DictVersion)
Cập nhật thông tin mô tả một version
DictVersion updateDictVersion(DictVersion, String version, String description, Date validatedFrom, Date validatedTo)
Chuyển trạng thái version từ drafting sang inuse, khi đó phiên bản đang sử dụng sẽ tự động được chuyển thành hết hạn
DictVersion makeDictVersionInUse(DictVersion)
Lấy version theo id quản lý
DictVersion getDictVersion(long dictVersionId)
Lấy danh sách các versions của một bộ collection
List<DictVersion> getDictVersions(DictCollection)
Lấy version đang sử dụng của một collection, mỗi collection chỉ có tối đa 1 version đang sử dụng
DictVersion getDictVersionInUse(DictCollection)
Lấy version đang biên tập của một collection, mỗi collection chỉ có tối đa 1 version đang biên tập
DictVersion getDictVersionDrafting(DictCollection)
Chức năng quản lý DictItem
Thêm mới mục dữ liệu vào từ điển không có version có kiểm tra phân quyền, trạng thái mục dữ liệu tạo ra là inuse
DictItem addDictItem(long userId, DictCollection, String code, String name, DictItem parent, ServiceContext)
Thêm mới mục dữ liệu vào version đang drafting, trạng thái mục dữ liệu tạo ra là drafting
DictItem addDictItem(long userId, DictVersion, String code, String name, DictItem parent, ServiceContext)
Xóa mục dữ liệu, chú ý chỉ cho phép xóa mục dữ liệu mà không có con
void deleteDictItem(DictItem)
Cập nhật mục dữ liệu
DictItem updateDictItem(DictItem, String code, String name, DictItem parent)
Lấy mục dữ liệu
DictItem getDictItem(long dictItemId)
Lấy danh sách tất cả mục dữ liệu trong một collection
List<DictItem> getDictItems(DictCollection)
Lấy danh sách mục dữ liệu trong một collection và đang được sử dụng
List<DictItem> getDictItemsInUse(DictCollection)
Lấy danh sách mục dữ liệu trong một version
List<DictItem> getDictItems(DictVersion)
Tìm mục dữ liệu trong một collection theo mã và ở trạng thái đang sử dụng
DictItem getDictItem(DictCollection, String itemCode)
Tìm các mục dữ liệu trong một collection theo tên và ở trạng thái đang được sử dụng
List<DictItem> getDictItems(DictCollection, String itemName)