`

osworkflow --权限的一些问题(group组)

阅读更多

来源: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-2.8.0-example.war 是一个基于OSWorkflow框架的示例应用,它为开发者提供了一个直观的理解和实践OSWorkflow工作流程引擎的机会。这个压缩包...

    osworkflow-2.8.0.zip

    在osworkflow-2.8.0.zip这个压缩包中,包含了osWorkflow 2.8.0版本的所有核心组件和相关文档,让我们一起深入了解一下这些文件的用途和重要性。 1. **设计器:designer.jar** 设计器是osWorkflow的一个可视化工具...

    osworkflow-canvas-master_nginx.zip

    《深入解析osworkflow-canvas与Nginx在源码层面的整合应用》 osworkflow-canvas与Nginx,这两个看似不相关的技术在实际开发中却有着紧密的联系。osworkflow-canvas是一款流程设计工具,它是osWorkflow的一部分,...

    OSWorkflow-2.8.0

    OSWorkflow-2.8.0 是一个开源的工作流引擎,主要应用于Java开发环境中。这个版本的OSWorkflow是在其官方网站上下载的,遗憾的是,现在该官网已经关闭,使得获取更新和文档变得更加困难。不过,这个安装包是经过修改...

    OSWorkflow-chinese-manual-2.8.rar

    博文链接:https://yanwu.iteye.com/blog/195250

    osworkflow-2.7.0.zip

    osworkflow-2.7.0版本是这个项目的稳定版本,包含了丰富的功能和改进。 在提供的压缩包"osworkflow-2.7.0.zip"中,包含以下几个关键文件和目录: 1. **designer.jar**:这是一个图形化的工作流设计工具,允许用户...

    osworkflow---提供osuser源碼

    标题中的“osworkflow---提供osuser源碼”指的是OSWorkflow框架的一个组成部分——osuser模块的源代码。OSWorkflow是一款开源的工作流引擎,它允许开发者在Java应用中实现复杂的业务流程。osuser模块则是该框架中...

    osworkflow-canvas-master_nginx_源码.rar

    标题中的"osworkflow-canvas-master_nginx_源码.rar"表明这是一个关于osWorkflow Canvas与Nginx服务器相关的源代码压缩包。osWorkflow是一个开源的工作流管理系统,用于管理业务流程,而Nginx则是一款高性能的HTTP和...

    osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar

    **osworkflow-2.8.0.jar** 是osworkflow的一个版本,包含了所有必要的类库和资源文件,供开发人员在项目中使用。这个版本可能包含了一些新的特性、性能优化或已知问题的修复。 **Hibernate** 是一个强大的对象关系...

    osworkflow-chinese-manual.rar_manual_osworkflow

    这份osworkflow-chinese-manual.pdf是osWorkflow的中文手册,对于理解和使用osWorkflow具有极高的参考价值。 工作流管理系统(Workflow Management System,WfMS)是企业信息化建设中的关键组件,它通过定义、执行...

    osworkflow-developer-guide(学习资料)

    《osworkflow-developer-guide》是关于OSWorkflow框架的开发者指南,它为理解、实施和定制OSWorkflow提供了详尽的指导。OSWorkflow是一个开源的工作流管理系统,用于管理应用程序中的业务流程。这个指南旨在帮助...

    osworkflow-developer-guide.rar_OSWorkflow ebooks_OsWorkFlow.rar_

    这个压缩包"osworkflow-developer-guide.rar_OSWorkflow ebooks_OsWorkFlow.rar_"包含了关于OSWorkflow的开发者指南和相关资源,非常适合那些想要深入理解并使用OSWorkflow进行开发的人。 **OSWorkflow 概述** ...

    OSWorkflow-chinese-manual-2.8.rar_Java 8_osworkflow

    这个“OSWorkflow-chinese-manual-2.8.rar”压缩包包含的是OSWorkflow的中文版2.8版本的手册,对于理解和使用该框架非常有帮助。 首先,我们需要了解工作流的基本概念。工作流是指在组织中,一系列相互关联的任务...

    osworkflow-2.8.0

    "OSworkflow-2.8.0" 是一个专注于工作流管理的开源软件解决方案。这个版本提供了全面的功能,帮助开发者在应用程序中实现灵活的工作流程。工作流管理是组织和自动化业务过程的关键工具,它使得任务分配、审批流程和...

    osworkflow入门范例

    使用方法:把mine压缩包解压,把osworkflow-2.8.0-example文件夹放入%TOMCAT_HOME%\webapp下。osworkflow-2.8.0-example.xml放在%TOMCAT_HOME%\conf\Catalina\localhost 当然数据库要配置连接池,名字为jdbc/...

    OSWorkflow - A Guide for Java Developers - PDF Books.pdf

    OSWorkflow是一款开源的工作流管理系统,广泛应用于Java开发领域。这本名为《OSWorkflow - A Guide for Java Developers》的电子书籍为Java开发者和架构师提供了一个全面整合开源业务流程管理系统OSWorkflow的指南。...

    osworkflow-example-demo.rar_DEMO_com.example.demo_osworkflow e

    这个"osworkflow-example-demo.rar"是一个示例项目,包含了OSWorkflow的源代码和一个经典的实例,适用于初学者学习和理解工作流管理系统的工作原理。由于不包含数据库和流程设计器,因此可能需要用户自行配置和设计...

    osworkflow-2.8.0.7z

    osWorkflow 提供了丰富的权限控制机制,允许对流程的访问和操作进行细粒度的控制。这包括对任务的分配、查看和完成权限的设定。 7. **API 与集成** osWorkflow 提供了 Java API,可以方便地将其集成到Java应用...

Global site tag (gtag.js) - Google Analytics