shark使用笔记

来源:互联网 发布:php abstract 类 编辑:程序博客网 时间:2024/05/30 04:48

1、先将shark用到的jar文件拷贝到工程的lib中(可能有些文件会冲突,比如我们的工程中有jgraph但是版本比较低,流程图就出不来)。
2、将shark的conf文件放到webroot目录下的conf文件夹中,还有logs文件夹,repository文件夹。
3、要查看流程图,需要配置生成流程图的servlet。
4、要查看流程图,jgraph.jar一定要用shark自带的那个版本。(我就遇到了这个问题,在原来的工程中有一个jgraph.jar,结果流程图就怎么也出不来)
5、可以用“工作流相关数据集”来存储工单的id。工作流数据集用于流程活动之间交换数据用,是可变的,而属性只存在于每个活动,下个活动是不能访问得到的。
   public static void variableSet(SharkConnection sConn,
                                  String activityId,
                                  String vName,
                                  String vValue) throws NotConnected, BaseException, UpdateNotAllowed, InvalidData {
      WfAssignment a = getAssignment(sConn, activityId);
      if (!isMine(sConn, a))
         throw new BaseException("I don't own activity "+ activityId);
      Map _m = new HashMap();
      Object c = a.activity().process_context().get(vName);
      if (c instanceof Long) {
         c = new Long(vValue);
      } else if (c instanceof Boolean) {
         c = Boolean.valueOf(vValue);
      } else if (c instanceof Double) {
         c = Double.valueOf(vValue);
      } else {
         c = vValue;
      }
      _m.put(vName, c);
      a.activity().set_result(_m);
   }
6、用“工作流的扩展属性”来记录web页面的url,读扩展属性的方法如下:
   public static String extAttribute(SharkConnection sConn, String activatyId,
                                     String extName) throws BaseException,
       NotConnected {
     WfAssignment a = getAssignment(sConn, activatyId);
     if (!isMine(sConn, a))
       throw new BaseException("I don't own activity " + activatyId);

     String procId = a.activity().container().key();
     return Shark
         .getInstance()
         .getAdminInterface()
         .getAdminMisc()
         .getActivitiesExtendedAttributeValue(procId, activatyId, extName);
   }
7、可以用工具代理来处理流程中的诸如换表单传值的功能。
8、如何获得流程的扩展属性。getProcessDefinitionExtendedAttributeValue,根据流程的扩展属性(属性中可以放新增工单的url),
   新增工单记录。
9、如何获得可以启动的流程列表。
   public static String[] processesToStart() {
      ExecutionAdministration ea = null;
      try {
         ea = Shark
         .getInstance()
         .getAdminInterface()
         .getExecutionAdministration();
         ea.connect(userName, pwd, engineName, null);
         WfProcessMgr[] a = ea
         .get_iterator_processmgr()
         .get_next_n_sequence(0);
         String [] ret = new String[a.length];
         for (int i = 0; i < a.length; ++i) {
            String n = a[i].name();
            if (_debug_)
               System.err.println("processName "+n);
            ret[i]= n;
         }
         return ret;
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         try {
            ea.disconnect();
         } catch (BaseException e) {} catch (NotConnected e) {}
      }
      return new String[]{};
   }  
10、在业务系统中注册的用户和shark中的用户关联起来。业务系统修改密码,shark也要修改。但是角色如何关联呢。

目前存在的问题:

如何终止一个正在流转的工作流。

jawe.jar有时会出现找不到resource,后来我把resource打到jar中就可以了,有时会出现,有时又是正常的。不知道什么原因。

 

 

原创粉丝点击