`
man1900
  • 浏览: 432917 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

J2EE、JAVA开源版OA发布了(JOffice)

    博客分类:
  • JBPM
阅读更多

 

  宏天软件作为一个技术实力雄厚的软件技术公司,支持国内开源的工作,整合国际J2EE先进的开源技术,把公司自主研发的的J.Office OA平台开放源代码,使用用户能够看得见并根据自己的实际情况修改源代码使之为己所用,在如此激烈的竞争环境中,只有商业软件、开源软件以及服务为导向的软件等多种模式共享,并相互借鉴,甚至融合,才能有利于软件技术的创新,并能为企业带来高效的回报,而以宏天软件再做一次惊人之举,率先提出“向客户免费开放源代码”,在国内J2EE企业开发领域里,尚属首次,其勇气及魄力不得不令人赞叹!

  面对当前国内OA市场鱼龙混杂的局面,OA产品价格从几千至百万元不等,很多企业在购买OA产品里,感觉雾里看花,甚至有些用户认为价格越高的OA产品就越好,对企业的帮助就越大,然而事实并非如此,随着后来竞争者不断崛起,如今的OA软件将变成如Office一样的大众化软件。俗话有说:“适合我自己的才是最好”。因此适合用户自己的OA产品才是最好,宏天软件的OA向所有用户开发源代码,企业只需要万元就可以购买一款性价非常高的OA软件,并可以免费获得其源代码,并且获得宏天软件的技术支持。宏天软件的OA产品将结束OA产品的暴利时代,成为大众化的软件。

  由于宏天软件OA平台采用均是优秀的开源技术,如(Spring,Hibernate,Jbpm4,Lucene,Jasper Report,Struts2,Ext3),可以做到跨数据库,跨浏览器,不需要考虑到系统不兼容,升级容易,不必担心系统所受到的限制。

  现在对外开一个开源的版本(JOffice v1.2 beta),供同行或国内事业单位的技术学习及进行相应的系统选型。在线测试版本:(由于对外开放的版本受服务器的限制,有些功能并不开放,有些抱歉),在firefox,google chrome下有性能及效果会比较好。

  http://www.jee-soft.cn/office/login.jsp

     或

     http://joffice.jee-soft.cn


      用户:csx 密码:111

 

      并且将每个月进行发行一个版本,源代码放在:

      http://code.google.com/p/joffice/

 

      公司技术介绍:

 

      http://www.jee-soft.cn
   
    技术支持服务:020-62652367,020-62652816,QQ:17629634,Msn:mansan2006@hotmail.com

 

     系统界面如下所示:

 

     

 

 

 

 

附加上企业版本的系统的图片:

 

JOffice 开源OA

 

 

  • 大小: 84.3 KB
  • 大小: 59.8 KB
  • 大小: 58.6 KB
  • 大小: 53.2 KB
  • 大小: 459.3 KB
22
5
分享到:
评论
19 楼 man1900 2009-11-16  
menuAction在下一个版本中才引入,目前供下载的版本还没有用到,请大家不要用common目录下的配置文件,而应该用joffice.zip下web目录下的配置
18 楼 man1900 2009-11-16  
package com.htsoft.oa.action.menu;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpSession;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;

import com.htsoft.core.util.AppUtil;
import com.htsoft.core.util.ContextUtil;


import com.htsoft.core.web.action.BaseAction;
import com.htsoft.oa.model.system.AppRole;

/**
* 显示系统左边的功能菜单
* @author csx
*
*/
public class MenuAction extends BaseAction{

//Menu ID
private String id=null;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

private static final String USER_MENU_DOC="_USER_MENU_DOC";

/**
* 根据权限获取当前用户的菜单
* @return
*/
private Document getCurDocument(){

HttpSession session=getSession();
Document userDoc=(Document)session.getAttribute(USER_MENU_DOC);
if(userDoc!=null){
return userDoc;
}

Document doc=AppUtil.getMenuDocument();
Set<String> rights=ContextUtil.getCurrentUser().getRights();

if(rights.contains(AppRole.SUPER_RIGHTS)){//具有超级管理权限
return doc;
}
Document newDoc=DocumentHelper.createDocument();
Element root = newDoc.addElement( "Menus" );

createSubMenus(rights,doc.getRootElement(),root);
//System.out.println("nodes:" + XmlUtil.docToString(newDoc));
//放置newDoc至Session,为下次访问带来方便
session.setAttribute(USER_MENU_DOC, newDoc);
return newDoc;

}

private void createSubMenus(Set<String>rights,Element curNodes,Element newCurNodes){
List els = curNodes.elements();
if(els.size()==0) return ;

for (int i = 0; i < els.size(); i++) {
Element el = (Element) els.get(i);
Attribute id = el.attribute("id");

if(id!=null){
String idVal=id.getValue();
if(rights.contains(idVal) || idVal==null ){
Element newNodes=newCurNodes.addElement(el.getName());
Iterator<Attribute> it=el.attributeIterator();

while(it.hasNext()){
Attribute at=it.next();
newNodes.addAttribute(at.getName(),at.getValue());
}
createSubMenus(rights,el,newNodes);
}
}
}
}


/**
* 显示某一项模块下的菜单
* @return
*/
public String items(){

Document doc=getCurDocument();

if(doc!=null){

StringBuffer sb=new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r");

Element el=doc.getRootElement();

List nodes=el.selectNodes("/Menus/Items[@id='"+id+"']/*");

sb.append("<Menus>\r");
for(int i=0;i<nodes.size();i++){

Node node=(Node)nodes.get(i);
sb.append(node.asXML());

}
sb.append("\r</Menus>\r");
setJsonString(sb.toString());
}

return SUCCESS;
}

/**
* 显示系统下所有的模块
* @return
*/
public String models(){
Document doc=getCurDocument();
StringBuffer sb = new StringBuffer("[");

if (doc != null) {
Element root = doc.getRootElement();
List els = root.elements();

for (int i = 0; i < els.size(); i++) {
Element el = (Element) els.get(i);

Attribute id = el.attribute("id");
Attribute text = el.attribute("text");
Attribute iconCls = el.attribute("iconCls");

sb.append("{id:'").append(id == null ? "" : id.getValue()).append("',");
sb.append("text:'").append(text == null ? "" : text.getValue()).append("',");
sb.append("iconCls:'").append(iconCls == null ? "" : iconCls.getValue()).append("'},");

}
if(els.size()>0){
sb.deleteCharAt(sb.length()-1);
}
}

sb.append("]");
setJsonString(sb.toString());
return SUCCESS;

}

}
17 楼 startwith0 2009-11-16  
楼主的分享精神真是可贵!希望楼主能把这个坚持下去。同时,我想自己编译运行一下程序,结果发现少了com.htsoft.oa.action.menu.MenuAction。希望能共享这个代码?还有一个问题,spring的配置文件中,好像有些是模块生成的配置,这个是怎么做的?
16 楼 man1900 2009-11-16  
neeke 写道
角色列表GridPanel为什么高度不填充满呢?

Panel中使用了AutoHeight=true,所以会随数据的多少来适应高度,当然你可以把这种属性设置为false,然后设置它的高度
15 楼 neeke 2009-11-16  
角色列表GridPanel为什么高度不填充满呢?
14 楼 man1900 2009-11-15  
请关注后面的版本,这些均有实现,我的博客也会有权限的设计及实现的博文。
http://man1900.iteye.com/blog/517248
13 楼 huhai 2009-11-15  
没有权限控制  根本不值什么
12 楼 qianlei007 2009-11-15  
还是可以,喜欢JBPM。。。 国内公司,开源,还是比较有勇气的。。。
11 楼 CodingMouse 2009-11-14  
唉!下载一看。没什么值得学习的地方。
10 楼 CodingMouse 2009-11-14  
谢谢!学习一下。
9 楼 man1900 2009-11-12  
the core source has open for everyone, please go to google code to download now
8 楼 man1900 2009-11-12  
core的代码会共享,这点大家不要担心,权限的细粒度控制会这个月底出一个版本,其代码也是放在core下。因为公司这部分代码只是给我们的培训开发企业使用。

领导说了,开放源代码倒不是问题,只是要担心国内有些公司拿了我们的成果,改成他们的名称,并且还申请专利。所以后面会加上使用声明要求。
7 楼 skyuck 2009-11-12  
man1900 写道
非常感谢大家的关注,因为开源版本维护的人员比较少,毕竟大家都要吃饭。开源的版本没有足够的人员参与测试,可能发布的版本都有些问题,国外开源比较好的项目也一样,都要经历两三年以上才比较成熟。大家先有足够的耐心等一下,后面会全部开放。

希望如此。昨天晚上看到让我很兴奋,结果发现有部分源码没有开发,又很失落!
6 楼 zjkilly 2009-11-12  
core里面是核心的代码怎么可能给你呢!?。。理解。。理解。。不过有很多东西可以借鉴,但是貌似做的很僵硬!。
5 楼 fengpy2009 2009-11-12  
能否发上来啊?难道还要反编译?
4 楼 man1900 2009-11-12  
非常感谢大家的关注,因为开源版本维护的人员比较少,毕竟大家都要吃饭。开源的版本没有足够的人员参与测试,可能发布的版本都有些问题,国外开源比较好的项目也一样,都要经历两三年以上才比较成熟。大家先有足够的耐心等一下,后面会全部开放。
3 楼 kongshanxuelin 2009-11-12  
中国特色,开源开到一半,其实是想别人来购买赚钱
2 楼 geweixin 2009-11-12  
  ,做的一般吧~~~
1 楼 skyuck 2009-11-11  
有部分源码没有公布啊。
像core包下的源码就没有!

相关推荐

    JOffice V1.2 beta

    这个JOffice V1.2 beta版,也就是官方说开源的版本之一。 说实话,这个公司很讨厌,打着开源的幌子来宣传自己的产品,里面的 东西根本没有开源,还很恶心的包留了一部分代码,htcore.jar。 对于这样的开源,我表示...

    JOffice1.3使用手册.

    关于 JOffice1.3使用手册,方便快捷,大家来下载

    SSH开发的办公自动化系统 OA

    SSH(Struts、Spring、Hibernate)是Java Web开发中常用的三大开源框架,它们各自承担着不同的职责,共同构成了强大的后端开发工具集。 Struts是MVC(Model-View-Controller)设计模式的一个实现,主要用于控制视图...

    joffice技术框架介绍

    jOffice技术框架是一款专为协同办公(OA)系统设计的开发框架,旨在提供一套完整的解决方案来满足企业级应用的需求。该框架支持多种办公自动化功能,包括但不限于公文管理、系统设置、信息管理和通讯管理等。本文将...

    JOffice2中的JBPM4的任务回退实现

    在JOffice2中,JBPM4是一个强大的工作流引擎,用于管理和执行业务流程。本文将深入探讨如何在JOffice2中实现JBPM4任务的回退功能,这在处理复杂流程时尤其重要,允许用户纠正错误或根据需要调整流程方向。 任务回退...

    java资料下载java资料下载java资料下载java资料下载

    Java资料下载通常涉及Java开发的各种资源,包括但不限于Java开发工具、框架、库、教程文档以及相关的服务器和数据库软件。在本例中,我们关注的是一个特定的Java应用程序——J.Office1.3.1,它与Tomcat6服务器绑定,...

    java extjs 仿163邮箱源码

    在压缩包中提到的“joffice”可能是该项目的一个组件或子目录,可能包含与Java Office集成相关的代码。这可能涉及到读取、写入或处理Office文档(如Word、Excel)的功能,使用户能够直接在邮箱中预览和编辑附件。 ...

    joffice文档

    // Chat.cpp : 定义应用程序的类行为。 // #include "stdafx.h" #include "Chat.h" #include "ChatDlg.h" #ifdef _DEBUG #define new DEBUG_NEW ... m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_...

    joffice文档转pdf再转swf

    office文档转pdf后,再转swf,最终显示需要的一些工具及jar包,包括一个office转pdf转swf的java文件。因目前可上传的文件大小限制,OpenOffice安装文件未上传,工具目前最新版本为3.4.1,请另行下载

    权限实现实例(Ext+java)

    【权限实现实例(Ext+java)】 在JOffice中,权限管理采用了基于角色的管理策略,这使得系统能够高效地实现对用户访问权限的控制。这种策略与Spring Security 2框架相结合,允许开发者通过配置文件对整个系统的权限...

    java打jar包方法

    虽然题目主要关注的是如何使用Java命令创建JAR文件,但提到了一个额外的SQL命令:`mysql-&gt;source F:/joffice131.sql`。这个命令用于MySQL数据库,它的作用是从指定的SQL脚本文件(这里是`F:/joffice131.sql`)读取并...

    SVN 源码 地址

    Apache的SVN库是业界非常知名的开源代码仓库之一,提供了丰富的Java Web技术相关的项目资源。该库位于`http://svn.apache.org/repos/asf/`,不仅包含了如Struts这样的经典Web应用框架的源码,还包含了Jakarta ...

    JOffVis:基于 Swing(Java)的工具,用于可视化 BIFF(二进制交换文件格式)文件

    JOffVis 一个基于 Java Swing 的工具,用于可视化 ...先决条件:1) Java SDK 72) Maven 3要编译应用程序,请运行以下命令mvn 干净编译要启动应用程序,请运行以下命令mvn exec:java -Dexec.mainClass="joffice.gui.App

    IReport3.6报表使用说明

    11. **上传至JOffice系统**: 完成设计后,将.jasper文件上传至报表管理系统,设定参数以便在系统中运行。 12. **参数设置和数据初始值**: 在报表参数设置中,指定参数的默认值或允许用户输入。这样,报表在运行时...

    JoPro:一个应用程序中的生产力和Office套件。-开源

    JoPro是一个生产力和办公套件,将文字处理器,电子表格设计器,演示设计器和svg查看器集成到一个应用程序中! 基于Netbeans平台。 图像和代码由Anthony Goubard设计。 最初称为Joffice。

    为Extjs加加速(javascript加速)

    在Joffice的实例中,ScriptMgr.load方法被用来异步加载所需的JS模块。当用户首次访问某个功能时,相关的JS文件会被加载并缓存起来。随后,如果用户再次访问同样的功能,则不会再重新加载这些JS文件,因为它们已经在...

Global site tag (gtag.js) - Google Analytics