来源: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.zip =====================================
osworkflow-chinese-manual.pdf
博文链接:https://yanwu.iteye.com/blog/195250
osworkflow-canvas-master_nginx_源码.rar
osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar
osworkflow-developer-guide(学习资料)
osworkflow-canvas-master_nginx.zip
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官网已经关闭,这个文件是从官网下载的安装包,经过修改之后,部署在Tomcat上,用以跑官方给的demo进行学习,具体部署细节可以看我写的文章
osworkflow-src源码包,官方下载
开源工作流osworkflow的资料
網站給出的例子所使用的用戶和群組管理文件。參考一下
OSWorkflow是opensymphony组织开发的工作流引擎,采用纯Java语言编写且源代码开放。OSWorkflow适用于任何Java平台,为开发者提供了灵活的业务逻辑流程,并且在企业ERP开发中得到广泛应用。作者陈刚继翻译...
osworkflow工作流的相关说明,很有必要看看。
一个不错的工作流引擎
osworkflow的英文版图书,里面详细介绍了工作流的历史,也详细说明了OSWorkflow的使用
osworkflow的操作说明,给开发工作流引擎的人提供参考。