DOC

本文介绍了一个公文管理系统的实现细节,包括文档的创建、审批流程管理、文档状态更新等功能,并展示了如何通过JBPM工作流引擎来支持这些业务逻辑。

package cn.cslg.shally.manager.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import cn.cslg.shally.manager.DocumentManager;
import cn.cslg.shally.manager.JbpmFacede;
import cn.cslg.shally.model.ApptoveInfo;
import cn.cslg.shally.model.Document;
import cn.cslg.shally.model.User;
import cn.cslg.shally.model.WorkFlow;
import cn.cslg.shally.utils.AbstractPageModel;
import cn.cslg.shally.utils.PageModel;
import cn.cslg.shally.utils.SystemException;


public class DocumentManagerImpl extends AbstractPageModel implements DocumentManager {

 private JbpmFacede jbpmFacede;
 
 
 public JbpmFacede getJbpmFacede() {
  return jbpmFacede;
 }

 public void setJbpmFacede(JbpmFacede jbpmFacede) {
  this.jbpmFacede = jbpmFacede;
 }

 @Override
 public void addApptoveInfo(ApptoveInfo approveInfo, int documentId,
   int approverId, boolean back) {
  Document doc = (Document)getHibernateTemplate().load(Document.class, documentId);
  User user = (User)getHibernateTemplate().load(User.class, approverId);
  approveInfo.setDoc(doc);
  approveInfo.setApprover(user);
  getHibernateTemplate().save(approveInfo);
  
  //如果是驳回,则返回上一个节点
  if(back){
   Object[] os = jbpmFacede.backStep(doc.getProcessInstance(), user.getUsername());
   doc.setStatus((String)os[0]);
   doc.setProcessInstance((Long)os[1]);
   getHibernateTemplate().update(doc);
  } 

 }

 @Override
 public void addDocument(Document document, int workflowId, int userId,
   Map props) throws SystemException {
  document.setWorkFlow((WorkFlow)this.getHibernateTemplate().load(WorkFlow.class, workflowId));
  document.setCreator((User)this.getHibernateTemplate().load(User.class, userId));
  document.setCreateTime(new Date());
  document.setStatus(Document.STATUS_NEW);
  document.setPropertiesMap(props);
  getHibernateTemplate().save(document);
  
  //添加流程实例
  long processInstanceId=jbpmFacede.addProcessInstance(document.getWorkFlow().getName(), document);
  
  //绑定流程实例的标识到公文对象
  
  document.setProcessInstance(processInstanceId);
  this.getHibernateTemplate().update(document);
 }

 @Override
 public void delDocument(int documentId) {
  Document doc=(Document)this.getHibernateTemplate().load(Document.class, documentId);
  
  //删除公文信息
  
  this.getHibernateTemplate().delete(doc);
  
  //删除流程实例
  jbpmFacede.delProcessInstance(doc.getProcessInstance());

 }

 @Override
 public Document findDocment(int documentId) {
  return (Document)this.getHibernateTemplate().load(Document.class, documentId);

 }

 @Override
 public List searchApprovingDocuments(int userId) {
  
  User user=(User)this.getHibernateTemplate().load(User.class,userId);
  
  List taskLists=jbpmFacede.searchMyTaskList(user.getUsername());
  
  if(taskLists==null || taskLists.isEmpty()){
   
   return null;
  }
  
  return this.getSession().createQuery("select d from Document d where d.id in (:ids)").setParameter("ids",taskLists).list();
 }

 @Override
 public PageModel searchApptoDoc(int userId) throws SystemException {
  return super.search("select d from Document d where d.creator.id = ?", new Object[]{userId});
 }

 @Override
 public List searchDocApptoHistory(int documentId) {
  return getHibernateTemplate().find("from ApptoveInfo ai where ai.doc.id = ?", documentId);
 }

 @Override
 public PageModel searchDocuments(int userId) throws SystemException {
  return super.search("select d from Document d where d.creator.id = ?", new Object[]{userId});
 }

 @Override
 public List searchNextSteps(int documentId, int userId) {
  Document doc=(Document) this.getHibernateTemplate().load(Document.class, documentId);
  
  User user=(User)this.getHibernateTemplate().load(User.class, userId);
  
  String userName=user.getUsername();
  
  return jbpmFacede.searchNextTransitions(doc.getProcessInstance(), userName);
 }

 @Override
 public void submitToWorkflow(int userId, int documentId,
   String transistionName) {
  User user=(User) getHibernateTemplate().load(User.class, userId);
  
  Document doc=(Document)getHibernateTemplate().load(Document.class, documentId);
  
  long processInstanceId=doc.getProcessInstance();
  
  String status=jbpmFacede.nextStep(processInstanceId, user.getUsername(), transistionName);
  
  doc.setStatus(status);
  getHibernateTemplate().update(doc);

 }

 @Override
 public void updateDocument(Document document, int workflowId, int userId) {
  // TODO Auto-generated method stub

 }

}

由于没有提供具体的参考引用内容,以下是关于DOC分区的一般性介绍: ### DOC分区的介绍 DOC(Disk Operating Characteristic)分区通常是指磁盘上具有特定用途的分区。在一些系统中,它可能是专门为特定功能或数据存储而预留的区域。例如在某些嵌入式系统或者特定的磁盘管理架构中,DOC分区可能被用来存储系统的关键配置文件、启动相关的数据等。 ### DOC分区的作用 - **系统启动支持**:DOC分区可以存储系统启动所需的引导程序、内核文件等。当计算机启动时,BIOS或UEFI会首先从DOC分区加载引导程序,进而引导操作系统的启动过程。 - **关键数据存储**:用于存放系统的重要配置信息,如系统参数、设备驱动程序等。这些数据对于系统的正常运行至关重要,将它们存放在DOC分区可以保证数据的安全性和稳定性。 - **数据隔离**:将特定的数据或功能与其他分区隔离开来,避免不同数据之间的相互干扰。例如,在多用户或多任务的系统中,DOC分区可以专门为系统管理数据服务,防止用户数据对系统关键数据的影响。 ### 相关知识 - **分区格式**:DOC分区可以采用不同的文件系统格式,如FAT32、NTFS、ext4等。不同的文件系统格式具有不同的特点和适用场景,例如FAT32兼容性好,但不支持大文件;NTFS则具有更好的安全性和性能,支持更大的文件和分区。 - **分区管理**:可以使用磁盘管理工具对DOC分区进行创建、删除、格式化等操作。在Windows系统中,可以使用磁盘管理控制台;在Linux系统中,可以使用fdisk、parted等命令行工具。 - **数据备份**:由于DOC分区存储着系统的关键数据,定期对其进行备份是非常重要的。可以使用系统自带的备份工具或第三方备份软件来完成备份任务,以防止数据丢失导致系统无法正常运行。 ```python # 以下是一个简单的Python示例,用于模拟磁盘分区的创建过程 def create_partition(disk, partition_size, partition_type): print(f"在磁盘 {disk} 上创建一个大小为 {partition_size} 的 {partition_type} 分区") # 这里可以添加实际的分区创建代码 return True # 调用函数创建分区 create_partition("Disk1", "10GB", "NTFS") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值