Skip to content

Thiết kế quản lý dữ liệu danh mục

Tạ Tuấn Anh edited this page Mar 14, 2016 · 13 revisions

###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)
Clone this wiki locally