CopyPropertiesActionHandler.java
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:2k
源码类别:

OA系统

开发平台:

Java

  1. package com.bjsxt.oa.managers;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;
  6. import org.hibernate.Session;
  7. import org.jbpm.graph.def.ActionHandler;
  8. import org.jbpm.graph.exe.ExecutionContext;
  9. import com.bjsxt.oa.model.Document;
  10. import com.bjsxt.oa.model.DocumentProperty;
  11. public class CopyPropertiesActionHandler implements ActionHandler {
  12. public void execute(ExecutionContext executionContext) throws Exception {
  13. //获得hibernate session对象,以便对数据库进行操作
  14. Session session = executionContext.getJbpmContext().getSession();
  15. //从流程实例中获得文档的ID
  16. int documentId = (Integer)executionContext.getContextInstance().getVariable("document");
  17. //从公文对象中获得动态定义的属性值
  18. Map props = ((Document)session.load(Document.class, documentId)).getProps();
  19. Map target = new HashMap();
  20. Set entries = props.entrySet();
  21. for (Iterator iter = entries.iterator(); iter.hasNext();) {
  22. Map.Entry entry = (Map.Entry) iter.next();
  23. Object key = entry.getKey();
  24. DocumentProperty prop = (DocumentProperty)entry.getValue();
  25. //仅简单判断是否非空,来将值设置到流程实例变量
  26. if(prop.getJava_io_File() != null){
  27. target.put(key, prop.getJava_io_File());
  28. }
  29. if(prop.getJava_lang_Integer() != null){
  30. target.put(key, prop.getJava_lang_Integer());
  31. }
  32. if(prop.getJava_lang_String() != null){
  33. target.put(key, prop.getJava_lang_String());
  34. }
  35. }
  36. //将真正的动态表单变量的值放入流程实例变量
  37. executionContext.getContextInstance().addVariables(target);
  38. }
  39. }