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中就可以了,有时会出现,有时又是正常的。不知道什么原因。