终于完整的走完了一个流程

先前一直被struts困扰,就差去源码里打断点,稍微总结一下:

1,Hibernate

先按照hibernate文档中的配置,照猫画虎,把entity写好,用注解进行配置,把jdbc.properties配置好。

2,写好dao的测试

本来是要用DBUnit,但是没有去用,当时只有建了三张表,以后再加。测试的时候还是直接到数据库中看,虽然

慢了一点。

3.,加入Spring

在原来成功的测试基础上加入Spring,将hibernate的配置文件全部去掉,都放到Spring中

4,写Service层

还是先写测试,本来是应该用EasyMock去模拟 Dao的,但是还是直接用测好的DAO。这样做有个非常严重的问题,到时候万一变了,改的地方会很多。

5,做页面

我做页面有个原则,页面里尽量只有HTML、CSS、JavaScript,不要把JSP加进去,非常难看,毕竟这些代码看得最多的是自己,还有就是要漂亮,那种表格式的布局我虽然不会,但我也不想去学,太难看了。

页面有抄袭之嫌,是从百度文库里拿过来的,把所有的JavaScript去掉,把大部分的没用的CSS去掉,留下了比较漂亮的静态页面,然后把action改掉。

6,加入struts2

这些框架里就数struts2最不熟悉,测试的时候,想参考下载struts2是的测试例子,但是JWebUnit真的不熟悉,还需要一点时间适应,姑且用原来的写过的EasyMock。

在写配置的时候,我尽量去参照struts的文档里的东西,可是一需要服务器的时候,问题就非常大, 经常要重启,浏览器也是一个非常大的问题,有时重启之后还是没有改过来,错误依旧有。

我为此把jetty都拿过来,把tomcat先放着,tomcat有个内存问题我一直没解决,不是不会,而是当初安装的时候不是解压式的安装,很多东西不好配置。

jetty确实感觉上比tomcat快,但有个问题很烦,在web.xml里的welcome-file-list明明在配置了index.jsp,可是总是跳转不到。jetty还有个问题是,当用IE打开我的那个页面的时候,CSS样式和图片总是会有那么几个加载不进来,但是别的浏览器没有问题,我也不知道是浏览器的问题,还是jetty的问题。用tomcat的时候,IE打开很顺畅。


我前短时间看到了Seam,太具有诱惑力了,真的可以把现在用的几乎所有的东西都扔掉,只用Seam。Spring的MVC感觉也挺好的,我真的有个疑问,是不是非得把hibernate和struts2加进来?加进来效果真的好吗?

如果一个就行了,那干嘛这么多人天天提SSH?

### 在Flowable BPM平台上流程实例启动后插入新节点的方法 在一个流程实例中,除了开始和结束外,其他部分均视为执行实例[^1]。因此,在流程实例启动之后动态添加新的节点意味着要修改正在运行中的执行路径。 对于Flowable工作流引擎而言,实现此功能的一种常见做法是在特定事件发生时利用监听器机制来调整流程走向。具体来说: - **使用边界事件或中间捕获事件**:可以在现有流程图的设计阶段预先设置好可能需要扩展的位置,即放置一些未配置触发条件的边界事件或者中间捕获事件作为预留接口。当实际业务逻辑要求增加额外处理环节时,则可以通过编程的方式激活这些预设好的事件并指定后续的操作步骤。 - **借助JavaDelegate或Expression形式的任务处理器**:如果希望更加灵活地控制新增加的内容而不局限于固定的模型设计,那么可以考虑采用自定义服务任务(Service Task),并通过`delegateExpression`属性关联到具体的Java类或是表达式脚本上。这样每当遇到此类特殊需求的时候就能即时改变行为而无需重新部署整个流程定义文件。 下面给出一段简单的代码片段用于展示如何通过API调用来影响当前活动流向下一个临时加入的服务任务: ```java // 获取RuntimeService对象 RuntimeService runtimeService = processEngine.getRuntimeService(); // 创建一个新的ExecutionEntity表示即将插入的新节点 Execution newExecution = context.getCommandContext() .getExecutionEntityManager().create(); newExecution.setProcessInstanceId(processInstanceId); newExecution.setParentId(execution.getId()); newExecution.setCurrentActivityId("dynamicTask"); // 将原有execution挂起以便转向至我们刚创建的那个分支上去 runtimeService.createChangeActivityStateBuilder() .moveExecutionToSingleActivityId(execution.getId(), "dynamicTask") .changeState(); // 启动新创建出来的这条线路继续往下走 runtimeService.trigger(newExecution.getId()); ``` 上述例子展示了怎样把一个名为“dynamicTask”的虚拟活动插入到正在进行的工作流之中,并让其成为下一步待办事项的一部分。需要注意的是这段伪代码仅作为一个概念性的指导方案,真实环境中还需要根据具体情况做适当调整优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值