接口 - lichangshu/rurl GitHub Wiki

接口

  • RURL系统与用户系统接口:

该接口实现 RURL系统和用户系统 的对接. 该接口有个极其简单的实现: UserinfoServiceImp, 基于配置文件"/config/config.properties"的,仅用于测试.

public interface UserinfoService {
	/**
	 * 列出所有部门
	 *
	 * @return
	 */
	public List<Department> findAllDepartment();
	/**
	 * 列出部门的所有员工
	 *
	 * @param did 部门id
	 * @return
	 */
	public List<Employe> findEmployeByDepartmentId(String did);
	/**
	 * 根据 account 查找员工.(可以是姓名也可以是账户,也可以是两者的集合,由实现决定)
	 *
	 * @param account
	 * @return
	 */
	public List<Employe> findEmployeByAccount(String account);
	/**
	 * 登录.
	 * 登录失败基本分两种情况,用户名错误/密码错误, 对应一个错误code 主要是用于国际化时错误判断用.
	 * @param account
	 * @param password
	 * @return
	 * @throws net.microwww.rurl.rmi.NoRightException
	 */
	public Employe login(String account, String password) throws NoRightException;
}
  • 客户端和服务器端接口

接口使用 hessian 的远程方法调用(RMI). 该接口会在客户端程序实现.一般客户端的不会直接被使用, 一般会将 Map 包装为对象.如:java 的实现 中的 RurlServiceWrap 类:

public interface RurlRightService {
	/**
	 * 
	 * 使用账户密码登录.
	 * 如果登录失败 会抛出异常, NoRightException 的 getMessage 可以获取错误的原因.
	 * 
	 * @param account
	 * @param password
	 * @return
	 * @throws NoRightException 
	 */
	public Map<String, Object> login(String account, String password) throws NoRightException;
	/**
	 * 某账户是否有登录应用(appname)的权限.
	 * 跟 login 方法分开的目的是 login 方法是用户系统实现的方法,而该方法是用于 RURL系统 来实现的.
	 * 
	 * @param appname
	 * @param account
	 * @return 
	 */
	public boolean hasLoginRight(String appname, String account);
	/**
	 * 列出某个账户在某个应用中的,拥有权限的所有URL.
	 * 
	 * @param appname
	 * @param account
	 * @return 
	 */
	public Map<String, Object>[] listAccountUrlRight(String appname, String account);
	/**
	 * 列出某应用中的被配置在 RURL系统 中的所有URL.
	 * 
	 * @param appname
	 * @return 
	 */
	public Map<String, Object>[] listUrlRight(String appname);
	/**
	 * 获取应用的配置信息.
	 * 
	 * @param appname
	 * @return 
	 */
	public Map<String, Object> getApplication(String appname);
	/**
	 * 保存一组URL, 用于客户端主动向服务器添加URL.
	 * 详细见 save4url(String appname, String url) 方法
	 * @param appname
	 * @param url
	 * @return 
	 */
	public Map<String, Object>[] saveURL(String appname, String[] url);
	/**
	 * 保存单个URL, 用于客户端主动向服务器添加URL.
	 * 对于已经存在的url不会继续添加,更不会修改.
	 * 
	 * @param appname
	 * @param url
	 * @return 
	 */
	public Map<String, Object> save4url(String appname, String url);
}

注意如果打算修改源码,建议不用使用 重载/多态(因为有的语言不支持,导致hessian不必要的麻烦).数据集合只使用数组和map,因为不同语言数据结构映射会有不同.

⚠️ **GitHub.com Fallback** ⚠️