使用非也写的fireflow工作流也有一段时间了。
一直没去深究过为什么WorkflowSession 对象是轻量级的、有状态的,而且是线程不安全的对象,所以不能在多个线程建共享。
今天做项目的时候(其实是写错了),在Action中把值写进了WorkflowSession,结果在map里怎么也获得不到。
查了半天看源代码
public IWorkflowSession getWorkflowSession() {
return new WorkflowSession(this);
}
原来每次都是new一个对象出来,怪不得在action和map里的 WorkflowSession是两个东西。
而workitem和taskinstance能共享数据则是因为workflowsession作为了他们成员变量被设值了。
看来有时候头昏也有头昏的好处,至少能让人究根问底。
一直没去深究过为什么WorkflowSession 对象是轻量级的、有状态的,而且是线程不安全的对象,所以不能在多个线程建共享。
今天做项目的时候(其实是写错了),在Action中把值写进了WorkflowSession,结果在map里怎么也获得不到。
查了半天看源代码
public IWorkflowSession getWorkflowSession() {
return new WorkflowSession(this);
}
原来每次都是new一个对象出来,怪不得在action和map里的 WorkflowSession是两个东西。
而workitem和taskinstance能共享数据则是因为workflowsession作为了他们成员变量被设值了。
看来有时候头昏也有头昏的好处,至少能让人究根问底。