- 浏览: 316106 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
<process-definition name="test3">
<start-state name="开始">
<!-- 流转条件,从ContextInstance中取days变量 -->
<transition name="流向李四审批" to="李四审批" condition="#{days gt 10}"></transition>
<transition name="流向王五审批" to="王五审批" condition="#{days le 10}"></transition>
</start-state>
<task-node name="李四审批">
<task name="审批">
<assignment actor-id="李四"></assignment>
</task>
<transition name="" to="结束"></transition>
</task-node>
<task-node name="王五审批">
<task name="审批">
<assignment actor-id="王五"></assignment>
</task>
<transition name="" to="结束"></transition>
</task-node>
<end-state name="结束"></end-state>
</process-definition>
//创建公文
@Test
public void createDocTest(){
JbpmContext context = null;
try {
//默认从classpath中查找名为hibernate.cfg.xml的配置文件
JbpmConfiguration configuration = JbpmConfiguration.getInstance();
//JbpmContext是对hibernate session的封装,提供了对JBPM相关对象的持久化功能
context = configuration.createJbpmContext();
Document document = new Document();
document.setTitle("公文"+new Random().nextInt());
context.getSession().save(document);
//创建流程实例
//1、首先从数据库中加载ProcessDefinition对象
ProcessDefinition definition = context.getGraphSession().findLatestProcessDefinition("test3");
//2、根据ProcessDefinition对象,创建流程实例对象
ProcessInstance instance = new ProcessInstance(definition);
instance.setKey(document.getId()+"");
context.save(instance);
//3、把公文对象和流程实例对象互相绑定
System.out.println("流程实例ID:"+instance.getId());
System.out.println("公文ID:"+document.getId());
document.setProcessInstanceId(instance.getId());
instance.getContextInstance().setVariable("documentId", document.getId());
//为流转条件赋值
instance.getContextInstance().setVariable("days", 5);
} catch (RuntimeException e) {
e.printStackTrace();
//回滚
context.setRollbackOnly();
}finally{
context.close();
}
}
//查询开始节点的下一个流转方向
@SuppressWarnings("unchecked")
@Test
public void searchNextTransitionsFromStartStateTest(){
JbpmContext context = null;
try {
//默认从classpath中查找名为hibernate.cfg.xml的配置文件
JbpmConfiguration configuration = JbpmConfiguration.getInstance();
//JbpmContext是对hibernate session的封装,提供了对JBPM相关对象的持久化功能
context = configuration.createJbpmContext();
//已知公文Id=5
Document document = (Document) context.getSession().load(Document.class, 5l);
//得到公文对应的流程实例
long processInstanceId = document.getProcessInstanceId();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
//当遇到流转是有条件的时候,该方法不合适
//List<Transition> list = instance.getRootToken().getNode().getLeavingTransitions();
Set<Transition> list = instance.getRootToken().getAvailableTransitions();
System.out.println("当前节点可以选择的流转方向有:");
for (Transition transition : list) {
System.out.println(transition.getName());
}
} catch (RuntimeException e) {
e.printStackTrace();
}finally{
context.close();
}
}
public void submitDocTest(){
JbpmContext context = null;
try {
//默认从classpath中查找名为hibernate.cfg.xml的配置文件
JbpmConfiguration configuration = JbpmConfiguration.getInstance();
//JbpmContext是对hibernate session的封装,提供了对JBPM相关对象的持久化功能
context = configuration.createJbpmContext();
//已知公文Id=6
Document document = (Document) context.getSession().load(Document.class, 6l);
//得到公文对应的流程实例
long processInstanceId = document.getProcessInstanceId();
ProcessInstance instance = context.getProcessInstance(processInstanceId);
/*将公文提交到下一个环节,只有在流程处于开始节点的时候使用,
当流程流转到某个任务节点时,不能使用该方法,因为使用该法只
能使流程流转到下一个节点,而不能保证该任务节点的任务已经完成,
使任务处于关闭状态*/
//无参数的signal()方法只能随机选择一个流转,当流转有条件时,就会出现冲突,提交失败
//可能会抛出org.jbpm.JbpmException: transition condition #{days gt 10} evaluated to 'false'
instance.signal("流向王五审批");//对于一个公文只能执行一次
} catch (RuntimeException e) {
e.printStackTrace();
//回滚
context.setRollbackOnly();
}finally{
context.close();
}
}
发表评论
-
二十七、jbpm回退
2012-11-16 10:56 2081要实现JBPM的任务回退很 ... -
二十六、JbpmFacade简单实现
2012-11-16 10:30 1140public class JbpmFacadeImpl ext ... -
二十五、将JBPM集成到基于SSH的OA系统中
2012-11-15 22:43 940具体步骤如下: -
二十四、如何给角色分配任务,而且拥有此角色的用户必需要通过n个人的审批之后才能继续往下?
2012-11-15 21:33 788解决方案: 1、 在一个node-enter ... -
二十三、如何给角色分配任务,而且拥有此角色的用户只要有一个用户审批通过就可以继续往下
2012-11-13 14:41 780解决方案: 首先,是基于前一个解决方案,我们自己来给 ... -
二十二、如何给角色分配任务,而且拥有此角色的用户均需审批通过之后才能继续往下?
2012-11-13 14:18 853解决方法: * 在一个n ... -
二十一、如何在Jbpm的各种Handler中访问spring的bean
2012-11-13 11:42 1076import org.springframe ... -
二十、如何给角色分配任务
2012-11-13 11:12 1167实现AssignmentHandler接口,在接口的实现方法中 ... -
十九、会签(通过PooledActors或者在一个TaskNode中定义多个Task)来实现
2012-11-09 17:15 1022如何实现多人会签,而且只要其中一个人审批通过就继续往下? ... -
十八、自定义VariableResolver
2012-11-09 16:50 1048<decision name="decisio ... -
十七、Decision节点和DecisionHandler的使用
2012-11-09 16:15 1050<?xml version="1.0& ... -
十六、流程相关的用例图、流程图
2012-11-08 17:29 1000部署流程: ... -
十五、从中间的TaskNode节点出发如何得到下一步可选路径列表
2012-11-06 16:12 834在上一节中说到: Set&l ... -
十三、Fork和Join节点的基本用法
2012-11-06 10:48 1086<?xml version="1.0&qu ... -
十二、查询公文流转到哪个节点
2012-11-06 10:43 980//得到流程流转到的当前节点 @Test ... -
十一、流程流转
2012-11-06 10:43 964提交公文到下一个节点(本节点不是开始节点) pr ... -
十、查询某个用户的公文列表
2012-11-05 10:27 873private void printTask(JbpmCont ... -
九、提交公文
2012-11-05 10:29 793//将公文提交到第一个环节 @Test ... -
八、创建公文
2012-11-05 10:29 8261、创建公文对象 public ... -
七、部署流程
2012-11-05 10:28 893测试代码如下: //部署流程定义:根据流程 ...
相关推荐
A*(A-star)路径搜索算法是一种在图形中寻找从起点到终点最短路径的启发式搜索算法。它结合了Dijkstra算法的最优性保证和Greedy最佳优先搜索的效率,通过评估节点的启发式函数来指导搜索方向,从而更快地找到目标。...
5. **Pruning Algorithms**:这些算法会从起点开始生成所有可能的路径,然后逐步删除那些不可行或者更长的分支,直到找到最短路径。 为了实现这个算法,首先需要加载`MAP.mat`数据,解析其中的障碍物信息。然后,...
A*(A-Star)算法是一种在图形搜索中寻找从起点到终点最短路径的有效方法。它结合了Dijkstra算法的全局最优性和 Greedy Best-First Search的局部优先性,通过引入启发式函数来提高搜索效率。在本项目中,A*算法被...
2. **路径搜索**:运用astart.m中的A*算法寻找从起点到目标点的最优路径。 3. **路径评估**:使用distanceCost.m计算路径成本,确保路径不仅避开障碍,还尽可能短。 4. **路径可行性检查**:调用feasiblePoint.m验证...
Linux 下 SAN 存储多路径软件的安装及配置 Linux 下 SAN 存储多路径软件的安装及配置是指在 Linux 操作系统中安装和配置 SAN 存储多路径软件的过程。这类软件可以将多个物理路径聚合成一个逻辑路径,从而提高存储...
- 计算从路径起点到指定路径点累积的距离。 - 该距离用于确定粒子应该位于哪两个路径点之间。 #### 四、扩展思考 1. **性能优化** - 使用更高效的算法来减少每帧的计算量。 - 减少对 ParticleSystem 组件的...
A*路径搜索算法是一种在图形或网格中寻找最短路径的有效方法,广泛应用于游戏开发、地图导航、机器人路径规划等领域。Python作为一种通用且易读的编程语言,是实现A*算法的理想选择。以下是对A*算法及其Python实现的...
在Android开发中,有时我们需要实现一个功能,即根据指定的本地路径展示视频列表,并能点击缩略图播放视频。这个功能对于许多应用,如视频管理器或者个人相册应用,都是至关重要的。以下是对这个标题和描述所涉及...
- 从当前位置出发,依次尝试向上、下、左、右四个方向移动。 - 如果新位置为有效路径(未被访问过且不是障碍物),则将其坐标、步数及方向入栈,并更新当前位置。 - 如果新位置为终点,则表示找到了一条可行路径...
题目描述的"求V1到V11的最短路径",意味着我们需要找到从起点V1到终点V11经过最少成本或时间的路径。这个问题可以使用Dijkstra算法或Floyd-Warshall算法等经典算法来解决,但在LINGO中,我们将采用线性规划的方法。 ...
2. **计算最早开始时间(ES)和最早结束时间(EF)**:从起点(START)开始,按照活动的逻辑顺序,分配最早的开始时间。对于汇聚点(即多个活动汇合的节点),取所有分支中最早开始时间的最大值作为汇聚点后面活动的...
### LINUX下多路径(multi-path)介绍及使用 #### 一、什么是多路径? 传统的计算机系统通常采用一对一的硬盘连接方式,即一个硬盘通过单一的总线与主机相连。但在现代数据中心环境中,如通过光纤组成的存储区域网络...
它通过维护一个优先队列(通常使用二叉堆实现),逐步地找到从起点到每个顶点的最短路径。算法的核心在于每次从未访问过的顶点中选取具有最短路径估计的顶点,并更新与其相邻的顶点的路径。一旦到达目标顶点,算法...
机器人在这些场的作用下寻找一条从起点到目标的最短路径,这个路径既尽可能短又避免碰撞障碍物。 在MATLAB环境中,我们可以使用二维数组来表示地图,并用不同的值标记障碍物和空地。`astart.m`可能包含以下关键步骤...
1. **初始化**: 设置初始节点(通常是起点),将其`f(n)`值设为`h(start)`,并将其添加到开放列表中。 2. **选择节点**: 从开放列表中选择`f(n)`值最小的节点,作为当前节点。 3. **扩展节点**: 对当前节点的每个未...
3. **终止条件**:当找到的顶点仍为起点时,说明所有顶点的最短路径都已确定,此时可退出循环。 ### 结语 通过对上述源代码的分析,我们可以看到MFC环境下实现最短路径算法的具体技术细节,包括数据结构的选择、...
基本思路是,从起点开始,每次找到一条新路径后,将上一条路径的终点作为新的起点,继续寻找下一条路径,直到找到k条不同的最短路径。此过程中,为了避免循环路径,会使用“k个回路检测”技术。 5. Johnson算法:...
删除小车功能,设定小车颜色(可选),加入预设的特殊布局地图、计时功能。 ### V1.2 删除小车功能完成 #### 问题记录 ![image-20201119153155889](C:\Users\AA\AppData\Roaming\Typora\typora-user-images\...
在机器人路径规划领域,A*算法能够帮助机器人找到从起点到终点的最短路径,同时考虑到障碍物和其他环境因素。MATLAB作为一种强大的数值计算和可视化工具,被广泛用于各种算法的实现,包括路径规划算法。 A*算法的...
给定一个起点S和一个终点T,目标是从起点S出发到达终点T,每一步只能向上、下、左、右移动一格,并且不能穿过障碍物。需要求解的是从起点到终点的最短步数。 #### 1.2 输入格式 输入包括两部分:首先是一行包含起点...