该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-23
可能是中文问题,把system.out.println()的中文去掉,就好了
|
|
返回顶楼 | |
发表时间:2007-07-24
挺好简单的例子可以给初学者一个形象的概念
jbpm底层一定要用hibernate,要是有jdbc实现就好了 |
|
返回顶楼 | |
发表时间:2007-07-27
Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));
Map map = new HashMap(); map.put("applicant", applicant); map.put("reason", reason); map.put("dayCount", new Integer(dayCount)); try { long wfid = wf.initialize("leave_apply", 100, null); 为什么我启用一个工作流的时候会报这个错呢? DEBUG [(opensymphony.workflow.AbstractWorkflow)] Outcome: stepId=1, status=Underway, owner=, actionId=100, currentStep=0 DEBUG [(spi.jdbc.JDBCWorkflowStore)] Executing SQL statement: INSERT INTO OS_CURRENTSTEP (ID,ENTRY_ID, STEP_ID, ACTION_ID, OWNER, START_DATE, DUE_DATE, FINISH_DATE, STATUS, CALLER ) VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null) com.opensymphony.workflow.StoreException: Unable to create current step for workflow instance #7: root cause: Cannot add or update a child row: a foreign key constraint fails (`workflowtest/os_currentstep`, CONSTRAINT `os_currentstep_ibfk_2` FOREIGN KEY (`OWNER`) REFERENCES `os_user` (`USERNAME`)) owner没有值造成的...而我session.getAttribute("username")是可以取得值的...?? |
|
返回顶楼 | |
发表时间:2007-07-27
你的session.getAttribute("username")取值是多少
看异常信息是插入的纪录OWNER字段违反外键约束,你看看取出的数据和os_user表中数据是否一致。 如果正常登陆,应该不会出现不一致的问题,检查检查 |
|
返回顶楼 | |
发表时间:2007-07-31
你好,我想把这个工程放在tomcat下运行,另外我没用JSQLConnect这种方式,而是用jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=osworkflow_app,结果连登录都不行。小弟刚开始接触这个,希望。QQ:251713646
希望大家,谢谢 |
|
返回顶楼 | |
发表时间:2007-07-31
to:lfh220
用什么驱动没有关系,都是可以的,我只是随便用了一个; 结果连登录都不行,那就根据后台显示的异常信息进行检查 |
|
返回顶楼 | |
发表时间:2007-08-02
非常感谢楼主把这么好的东西贡献出来.
你用的是jboss,能把tomcat的配置也写出来吧?谢谢. |
|
返回顶楼 | |
发表时间:2007-08-02
to:zhangyqpost
tomcat下都一样,只是数据源配置一下即可 |
|
返回顶楼 | |
发表时间:2007-08-03
你好,能不能通过组中的人员来审批。而不是hr,manager这两个人,希望楼主提供这样的例子,还有hr manager都不能申请请假
|
|
返回顶楼 | |
发表时间:2007-08-03
lfh220 写道 能不能通过组中的人员来审批。而不是hr,manager这两个人,希望楼主提供这样的例子
通过组来审批是完全可以的,上面的例子是通过在流程定义文件中,为每个审批步骤指定一个特定的用户来作为所有者,配置如: <result old-status="Finished" status="Underway" step="2" owner="manager1">这样就限制了下一个步骤只能由用户名为manager1的这个人来完成。 如果某个步骤可以由一个组中的任何用户来操作,就可以将owner设置为组的名字,后面提取任务的时候通过组名来提取,比如一个部门有多个主管可以审批请假申请(先不管业务上是否合理),这些主管都属用用户组manager,这样就可以将下一步审批的owner置为manager,然后在后面用户任务提取的页面,即underway.jsp中,通过组名来提取任务即可,代码如下,注释部分为原来的提取表达式: String username = (String) session.getAttribute("username"); UserManager userManager = UserManager.getInstance(); User user = userManager.getUser(username); List groups = user.getGroups(); Workflow wf = new BasicWorkflow(username); // NestedExpression nestedExpression = new NestedExpression( // new Expression[]{new FieldExpression(FieldExpression.OWNER, FieldExpression.CURRENT_STEPS, FieldExpression.EQUALS, session.getAttribute("username")), // new FieldExpression(FieldExpression.STATUS, FieldExpression.CURRENT_STEPS, FieldExpression.EQUALS, "Underway")}, // NestedExpression.AND) ; Expression[] expressions = new Expression[groups.size()]; for (int i = 0; i < groups.size(); i++){ expressions[i] = new FieldExpression(FieldExpression.OWNER, FieldExpression.CURRENT_STEPS, FieldExpression.EQUALS, (String)groups.get(i)); } NestedExpression nestedExpression = new NestedExpression( new Expression[]{new NestedExpression(expressions, NestedExpression.OR), new FieldExpression(FieldExpression.STATUS, FieldExpression.CURRENT_STEPS, FieldExpression.EQUALS, "Underway")}, NestedExpression.AND); WorkflowExpressionQuery query = new WorkflowExpressionQuery(nestedExpression); 后面代码全部一样 lfh220 写道 还有hr manager都不能申请请假
在示例中hr等不能申请请假,是因为流程定义文件中有限制,如下: <step id="1" name="请假申请"> <actions> <action id="1" name="提交请假申请"> <restrict-to> <conditions type="AND"> <condition type="class"> <arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg> <arg name="group">employee</arg> </condition> </conditions> </restrict-to> ...... </action> </actions> </step> |
|
返回顶楼 | |