1 将JBPM的配置文件打包成ZIP,并从zip中解出来,然后导入到数据库去。
ZipInputStream zipInputStream = new ZipInputStream(LoadClassFromArchieve.class.getResourceAsStream("simpleProcess.war")); JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); try { // ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream); // jbpmContext.deployProcessDefinition(processDefinition); GraphSession grapSession = jbpmContext.getGraphSession(); ProcessDefinition processDefinition = grapSession.findLatestProcessDefinition("simple"); grapSession.deleteProcessDefinition(processDefinition); } catch (Exception e) { e.printStackTrace(); }finally{ jbpmContext.close(); zipInputStream.close(); }
2 Jbpm的一个流程开始代码。
//jbpmContext是用来保准Hibernate 事务的,主要是和事务打交道。 JbpmContext jbpmContext = JbpmConfirguration.CreateJbpmContext(); try{ GraphSession graphSession = jbpmContext.getGraphSession(); ProcessDefinition pdf = graphSession.findLastestProcessDefinition("processDefinistion"); pi.getContextInstance().createVariable("newVariable",newVariable); pi.signal(); jbpmContext.save(pi); }finally{ jbpmContext.close(); }
3 怎么从数据库得到一个ProcessIntance。
将ProcessInstanceId作为参数放在订单里面,里面记录了订单当前的所处的jbpm的状态。
从ProcessIntance中得到TaskInstance,调用TaskIntance.end("applyRefund");就可以将流程走下去。
4 Token的作用是什么。
ProcessInstance中RootToken的作用是什么。
Node在JBPM中处的位置
Node代表的是TaskNode,Decision和Node,表示流程所处的一个状态,可以在Node上挂Task或Action的回调函数。完成业务自己的功能。
TaskIntance的作用是什么?
5 Profile.enter("流程开始!");将执行的时间,保存在一个ThreadLocal里面,最后才用StringBuilder将其统计出来。
7 怎么根据流程名字,直接得到将当前的ProcessIntance在内存中重建。
Node curNode = processDefinition.getNode("总经理审批");
processIntance.getRootToken().setNode(curNode):
processIntance.signal();//触发状态转移。
8 fwei只用了一个表来保存流程的当前状态,主要保存的有:
流程的业务ID,业务Type,ProcessDefinition名,ProcessDefinition版本,流程的上下文参数,比如本流程需要借款,借款的金额,借款的单位,会表示成Map,dump成 名值对 数据库的Process_Context字段中去。
9 错误输入:"流程["+processName+"]不存在!";
19 iBatis 可能需要写点小程序来把大部分情况用熟悉。包括如何搭建环境,如何写SqlMap DAO。
10 开发工程师的职责:
理解交易三期的商业需求和产品的方向和目标。
撰写系统UC,完整描述系统过程,边界条件,输入输出等,对具体实现的功能需求负责;
撰写系统设计说明书;
撰写系统设计文档,对系统设计方案负责;
写单元测试;
编码实现;
11 将Map的Key按字符串顺序排列。
List<String> keys = new ArrayList<String>(params.keySet());
Collections.sort(keys);