来源:http://hi.baidu.com/pluto_andy/blog/item/8f74c20b4a5c061695ca6b39.html
在osworkflow的example.xml中,可以看到这样的配置:
<condition type="class">
<arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg>
<arg name="group">foos</arg>
</condition>
这是一个条件语句,意思是:判断当前执行改流程的用户在不在group组(foos是组的名字)中,是执行什么流程,不是执行什么流程。
那在实际开发中如何应用这个组呢?这就要用到osuser.xml配置文件。
<opensymphony-user>
<!--数据储存在内存中-->
<provider class="com.opensymphony.user.provider.memory.MemoryAccessProvider" />
<provider class="com.opensymphony.user.provider.memory.MemoryCredentialsProvider" />
<provider class="com.opensymphony.user.provider.memory.MemoryProfileProvider" />
<!--数据持久化到数据库中-->
<provider class="com.opensymphony.user.provider.jdbc.JDBCAccessProvider">
<property name="user.table">eruser</property>
<property name="group.table">role</property>
<property name="membership.table">user_role</property>
<property name="user.name">usid</property>
<property name="user.password">loginpwd</property>
<property name="group.name">roleid</property>
<property name="membership.userName">ur_userid</property>
<property name="membership.groupName">ur_roleid</property>
<property name="datasource">java:comp/env/jdbc/sqlserver</property>
</provider>
<provider class="com.opensymphony.user.provider.jdbc.JDBCCredentialsProvider">
<property name="user.table">eruser</property>
<property name="group.table">role</property>
<property name="membership.table">user_role</property>
<property name="user.name">usid</property>
<property name="user.password">loginpwd</property>
<property name="group.name">roleid</property>
<property name="membership.userName">ur_userid</property>
<property name="membership.groupName">ur_roleid</property>
<property name="datasource">java:comp/env/jdbc/sqlserver</property>
</provider>
<provider class="com.opensymphony.user.provider.jdbc.JDBCProfileProvider">
<property name="user.table">eruser</property>
<property name="group.table">role</property>
<property name="membership.table">user_role</property>
<property name="user.name">usid</property>
<property name="user.password">loginpwd</property>
<property name="group.name">roleid</property>
<property name="membership.userName">ur_userid</property>
<property name="membership.groupName">ur_roleid</property>
<property name="datasource">java:comp/env/jdbc/sqlserver</property>
</provider>
<authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator"/>
</opensymphony-user>
简要的说明一下改配置文件:
当数据存储在内存中时,不用做什么配置。要持久化到数据库中,就要配置数据库连接池了。
property name="datasource">java:comp/env/jdbc/sqlserver</property>
这条语句就是对连接池的调用。
在osworkflow中主要有三个类对group进行操作:
User、Group、UserManager
user对应相应的用户表,Group对应相应的组表,两表是多对多的关系。有个中间表维护两种表。
UserManager的作用就是管理用户和组以及两者之间的关系。
------------------------------------------具体应用代码--------------------------------------------
UserManager um = UserManager.getInstance(); //
com.opensymphony.user.User test = null;
test = um.createUser("test"); //新建用户test
foos = um.createGroup("haha");//新建用户haha
test.addToGroup(foos); //将test添加到haha组中
//程序执行流程时,会执行OSUserGroupCondition
public class OSUserGroupCondition implements Condition {
//~ Methods ////////////////////////////////////////////////////////////////
public boolean passesCondition(Map transientVars, Map args, PropertySet ps) {
try {
WorkflowContext context = (WorkflowContext) transientVars.get("context");
User user = UserManager.getInstance().getUser(context.getCaller());
return user.inGroup((String) args.get("group"));
} catch (EntityNotFoundException e) {
return false;
}
}
}
更改源文件JDBCAccessProvider类中inGroup方法的sql语句
分享到:
相关推荐
《osworkflow-2.8.0-example.war:工作流引擎的实战应用》 osworkflow-2.8.0-example.war 是一个基于OSWorkflow框架的示例应用,它为开发者提供了一个直观的理解和实践OSWorkflow工作流程引擎的机会。这个压缩包...
在osworkflow-2.8.0.zip这个压缩包中,包含了osWorkflow 2.8.0版本的所有核心组件和相关文档,让我们一起深入了解一下这些文件的用途和重要性。 1. **设计器:designer.jar** 设计器是osWorkflow的一个可视化工具...
《深入解析osworkflow-canvas与Nginx在源码层面的整合应用》 osworkflow-canvas与Nginx,这两个看似不相关的技术在实际开发中却有着紧密的联系。osworkflow-canvas是一款流程设计工具,它是osWorkflow的一部分,...
OSWorkflow-2.8.0 是一个开源的工作流引擎,主要应用于Java开发环境中。这个版本的OSWorkflow是在其官方网站上下载的,遗憾的是,现在该官网已经关闭,使得获取更新和文档变得更加困难。不过,这个安装包是经过修改...
博文链接:https://yanwu.iteye.com/blog/195250
osworkflow-2.7.0版本是这个项目的稳定版本,包含了丰富的功能和改进。 在提供的压缩包"osworkflow-2.7.0.zip"中,包含以下几个关键文件和目录: 1. **designer.jar**:这是一个图形化的工作流设计工具,允许用户...
标题中的“osworkflow---提供osuser源碼”指的是OSWorkflow框架的一个组成部分——osuser模块的源代码。OSWorkflow是一款开源的工作流引擎,它允许开发者在Java应用中实现复杂的业务流程。osuser模块则是该框架中...
标题中的"osworkflow-canvas-master_nginx_源码.rar"表明这是一个关于osWorkflow Canvas与Nginx服务器相关的源代码压缩包。osWorkflow是一个开源的工作流管理系统,用于管理业务流程,而Nginx则是一款高性能的HTTP和...
**osworkflow-2.8.0.jar** 是osworkflow的一个版本,包含了所有必要的类库和资源文件,供开发人员在项目中使用。这个版本可能包含了一些新的特性、性能优化或已知问题的修复。 **Hibernate** 是一个强大的对象关系...
这份osworkflow-chinese-manual.pdf是osWorkflow的中文手册,对于理解和使用osWorkflow具有极高的参考价值。 工作流管理系统(Workflow Management System,WfMS)是企业信息化建设中的关键组件,它通过定义、执行...
《osworkflow-developer-guide》是关于OSWorkflow框架的开发者指南,它为理解、实施和定制OSWorkflow提供了详尽的指导。OSWorkflow是一个开源的工作流管理系统,用于管理应用程序中的业务流程。这个指南旨在帮助...
这个压缩包"osworkflow-developer-guide.rar_OSWorkflow ebooks_OsWorkFlow.rar_"包含了关于OSWorkflow的开发者指南和相关资源,非常适合那些想要深入理解并使用OSWorkflow进行开发的人。 **OSWorkflow 概述** ...
这个“OSWorkflow-chinese-manual-2.8.rar”压缩包包含的是OSWorkflow的中文版2.8版本的手册,对于理解和使用该框架非常有帮助。 首先,我们需要了解工作流的基本概念。工作流是指在组织中,一系列相互关联的任务...
"OSworkflow-2.8.0" 是一个专注于工作流管理的开源软件解决方案。这个版本提供了全面的功能,帮助开发者在应用程序中实现灵活的工作流程。工作流管理是组织和自动化业务过程的关键工具,它使得任务分配、审批流程和...
使用方法:把mine压缩包解压,把osworkflow-2.8.0-example文件夹放入%TOMCAT_HOME%\webapp下。osworkflow-2.8.0-example.xml放在%TOMCAT_HOME%\conf\Catalina\localhost 当然数据库要配置连接池,名字为jdbc/...
OSWorkflow是一款开源的工作流管理系统,广泛应用于Java开发领域。这本名为《OSWorkflow - A Guide for Java Developers》的电子书籍为Java开发者和架构师提供了一个全面整合开源业务流程管理系统OSWorkflow的指南。...
这个"osworkflow-example-demo.rar"是一个示例项目,包含了OSWorkflow的源代码和一个经典的实例,适用于初学者学习和理解工作流管理系统的工作原理。由于不包含数据库和流程设计器,因此可能需要用户自行配置和设计...
osWorkflow 提供了丰富的权限控制机制,允许对流程的访问和操作进行细粒度的控制。这包括对任务的分配、查看和完成权限的设定。 7. **API 与集成** osWorkflow 提供了 Java API,可以方便地将其集成到Java应用...