osworkflow还是有些东西不太明白是怎么回事
网上的例子也是千篇一律
兄弟们有没有简单完整点的例子给小弟看看呢
不要osworkflow自带的例子
最好是自己完成的可以运行的
网上的例子也是千篇一律
兄弟们有没有简单完整点的例子给小弟看看呢
不要osworkflow自带的例子
最好是自己完成的可以运行的
解决方案 »
- jsp页面登录输入数据后,在mysql的数据表中无增加项?
- 组件问题
- JSP中音频视频问题
- 求jsp代理ajax跨域问题
- 动态向表里插数据
- action=""&&action="#"?????
- 我按http://www-900.ibm.com/developerworks/cn/opensource/os-ectom/#IDAILS4B做,怎么出现这个错误!
- 求救:servlet编译问题
- 怎样编译javax.servlet包
- 怎么使用JavaScript给textarea重复赋值,但是每次的赋值不覆盖上次的值
- 基于java技术构建, 小第做了个 msn 中英文翻译 机器人!!!
- jfreechart问题
先写配置文件:osworkflow.xml——配置文件,指定存储方法等<osworkflow>
<!-- 内存维持流程状态,测试用。在实际生产环境中应该使用JDBC或者Hibernate等维持状态 -->
<persistence class="com.opensymphony.workflow.spi.memory.MemoryWorkflowStore" /><!-- 使用XML文件定义流程,指定流程列表文件为workflows.xml -->
<factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
<property key="resource" value="workflows.xml" />
</factory>
</osworkflow> workflows.xml——流程列表文件,指定流程名称及定义文件位置,这里只包含一个名为DefaultWorkFlow的流程<workflows>
<workflow name="DefaultWorkFlow" type="resource" location="workflow.xml"/>
</workflows>
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd">
<workflow>
<initial-actions>
<!-- 初始化的可用action -->
<action id="1" name="Create">
<results>
<!-- 指定在初始化后, 跳转到id为20的step -->
<unconditional-result old-status="Finished" step="20" status="Open"/>
</results>
<post-functions>
<function type="class">
<arg name="class.name">chdw.CreateFunction</arg>
</function>
</post-functions>
</action>
</initial-actions>
<steps>
<step id="20" name="Open">
<actions>
<!-- 指定对于该步骤可用的动作 -->
<action id="2001" name="完成">
<restrict-to>
<conditions type="AND">
<condition type="class">
<arg name="class.name">chdw.CanCloseFunction</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="Finished" step="21" owner="${caller}" status="Underway"/>
</results>
<post-functions>
<function type="class">
<arg name="class.name">chdw.CloseFunction</arg>
</function>
</post-functions>
</action>
</actions>
</step>
<step id="21" name="Close">
</step>
</steps>
</workflow>
//指定加载osworkflow.xml配置文件
config.load(new File("src/osworkflow.xml").toURL());//初始化Workflow对象,指定当前用户名称为MyName
Workflow workflow = new BasicWorkflow("MyName");//调用流程名称为DefaultWorkFlow、id为1的初始化动作。jira会自动调用在xml中指定的CreateFunction类中的方法
long flowId = workflow.initialize("DefaultWorkFlow", 1, new HashMap());//该flowId就是对应该次流程的唯一编号,以后的流转中是不会发生改变的。
System.out.println(flowId);//取出可用的动作,jira会根据CanCloseFunction中的返回值进行判断,当前的用户是否可用。
int[] steps = workflow.getAvailableActions(flowId, null);
System.out.println(steps[0]);
//继承下一步的动作。
workflow.doAction(flowId, steps[0], null);System.out.println(workflow.getAvailableActions(flowId, null).length);
public class CreateFunction implements FunctionProvider { public void execute(Map transientVars, Map args, PropertySet propertyset) throws WorkflowException {
}
}
public class CanCloseFunction implements Condition { public boolean passesCondition(Map transientVars, Map args, PropertySet propertyset)
throws WorkflowException {
return true;
}
}
public class CloseFunction implements FunctionProvider { public void execute(Map transientVars, Map args, PropertySet propertyset) throws WorkflowException {
}
}
}
这个方法在编译完成后,启动tomcat会自动运行么?
at java.net.URLClassLoader$1.run(URLClassLoader.java:190)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:282)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:51)
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:31)
at com.opensymphony.workflow.spi.memory.MemoryWorkflowStore.getPropertySet(MemoryWorkflowStore.java:56)
at com.opensymphony.workflow.AbstractWorkflow.initialize(AbstractWorkflow.java:601)
at com.yourcompany.struts.Test.main(Test.java:27)
Exception in thread "main" 这个是为什么呢?package com.yourcompany.struts;import java.io.File;
import java.net.MalformedURLException;
import java.util.HashMap;import com.opensymphony.workflow.InvalidActionException;
import com.opensymphony.workflow.InvalidEntryStateException;
import com.opensymphony.workflow.InvalidInputException;
import com.opensymphony.workflow.InvalidRoleException;
import com.opensymphony.workflow.Workflow;
import com.opensymphony.workflow.WorkflowException;
import com.opensymphony.workflow.basic.BasicWorkflow;
import com.opensymphony.workflow.config.DefaultConfiguration;
public class Test {
public static void main(String args[]) throws InvalidActionException, InvalidRoleException, InvalidInputException, InvalidEntryStateException, WorkflowException, MalformedURLException{
DefaultConfiguration config = new DefaultConfiguration();
// 指定加载osworkflow.xml配置文件
config.load(new File("src/osworkflow.xml").toURL());// 初始化Workflow对象,指定当前用户名称为MyName
Workflow workflow = new BasicWorkflow("MyName");// 调用流程名称为DefaultWorkFlow、id为1的初始化动作。jira会自动调用在xml中指定的CreateFunction类中的方法
long flowId = workflow.initialize("DefaultWorkFlow", 1, new HashMap());// 该flowId就是对应该次流程的唯一编号,以后的流转中是不会发生改变的。
System.out.println(flowId);// 取出可用的动作,jira会根据CanCloseFunction中的返回值进行判断,当前的用户是否可用。
int[] steps = workflow.getAvailableActions(flowId, null);
System.out.println(steps[0]);
// 继承下一步的动作。
workflow.doAction(flowId, steps[0], null); System.out.println(workflow.getAvailableActions(flowId, null).length);
}
}
把你的代码放进对应的文件里就可以直接运行了嘛,好用做什么配置么?
DefaultConfiguration config = new DefaultConfiguration();
// 指定加载osworkflow.xml配置文件
config.load(new File("src/osworkflow.xml").toURL());// 初始化Workflow对象,指定当前用户名称为MyName
Workflow workflow = new BasicWorkflow("MyName");// 调用流程名称为DefaultWorkFlow、id为1的初始化动作。jira会自动调用在xml中指定的CreateFunction类中的方法
long flowId = workflow.initialize("DefaultWorkFlow", 1, new HashMap());// 该flowId就是对应该次流程的唯一编号,以后的流转中是不会发生改变的。
System.out.println(flowId);// 取出可用的动作,jira会根据CanCloseFunction中的返回值进行判断,当前的用户是否可用。
int[] steps = workflow.getAvailableActions(flowId, null);
System.out.println(steps[0]);
// 继承下一步的动作。
workflow.doAction(flowId, steps[0], null); System.out.println(workflow.getAvailableActions(flowId, null).length);
上面这段代码可以直接放到main方法里运行吧
那是什么意思呢
27行是:long flowId = workflow.initialize("DefaultWorkFlow", 1, new HashMap());那会是什么原因呢
你说的单步跟踪是什么意思呢,long flowId = workflow.initialize("DefaultWorkFlow", 1, new HashMap());
把id换成其他的值么,我换过了,还是一样的错误