论坛首页 Java企业应用论坛

开源项目XWorker介绍。(增加了编码解码示例)

浏览 13814 次
精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2012-01-12   最后修改:2012-01-29

本帖目标在于介绍XWorker,希望编程人员参与或使用XWorker。XWorker是一个完全免费开源的软件,所以不会被认为是广告贴而删除吧。

 

XWorker是什么?

    XWorker研究智能系统,希望它最终能够成为一个有用的工具。

 

XWorker的核心是什么?

    XWorker的核心是面向事物,面向事物是一种认知事物的方法,XWorker则是一个实现了面向事物的系统。

 

XWorker的特点

1. XWorker是一个开发工具。

    XWorker是一个编程工具,可以编写程序,主要通过配置的方式编程。

    XWorker开发的另一个主要特点是能够保存和重复使用开发经验,一方面这是面向事物的特点,另一个方面XWorker有模板、特征、笔记等辅助工具来实现开发经验的重复利用。

 

2. XWorker是一个自增长的系统。

    '自增长'这个词可能用的不妥,不过我的意思是在XWorker中编写的任何程序都自动属于XWorker的一部分。也就是说你在XWorker中使用的越多,那么它的功能就越强。

    注:自动属于XWorker的一部分不是指软件归属,XWorker是一个免费开源软件,使用XWorker编写的事物归编程者所有。

 

3. 易于构建和使用框架。

    我想这是面向事物的功劳。

 

4. 方便使用其他开源组件。

    使用XWorker能方便使用其他开源组件开发程序,比如在XWorker使用SWT、EXTJS、MINA、JFREECHART等。

    这是目前XWorker的一个主要的工作,XWorker集成其他开源组件并不是原封不动的同构,而是主要集成使用方法(经验),比如XWorker中的SWT的Shell事物,就多了屏幕居中的属性。

 

 

本帖的目的是什么?

    让大家认识面向事物的价值,吸引开发者使用XWorker,开发出更好的工具出来。目前主要是想吸引开发者参与XWorker。

    对我来说让大家认识到面向事物的价值是最终目标,我想通过XWorker的使用价值(即觉得XWorker好用)来让大家逐渐认识面向事物。

    小声说下先前我已经有一次推广面向事物的惨败记录了,上次我是希望通过学术的方式,比如:投稿、写信给专家学者等(主要数学、哲学的等),除了方舟子有一个侧面回复(他的博客第二天出现了一个关于农民科学家的帖子),其余全部一点消息都没有,也有和周围的同事、发帖讨论等,最后都没有办法让任何一个人意识到面向事物的价值。

    上次的惨痛失败(这次可能也会)并不会让我失去信心,至少XWorker可以成为一个有用的工具。

 

本帖索引

下面不定期的会有XWorker模块介绍,直到确实没人对XWorker感兴趣或有人愿意使用XWorker开发为止。

 

XWorker方面

    1. XWorker介绍。(本页)

    2. 面向事物介绍。

    3. 事物和动作的解释。

 

数据对象方面

    数据对象基于关于数据,是一个非常轻量的实现,它能把数据库、内存中的数据、CSV等等数据混合起来建立关系并快速处理它们。

 

    1. 数据对象的视频介绍和一些控件截图。(本页)

    2. 数据对象的查询和统计示例。(2012-01-18)

 

数据库操作

    1. 在XWorker中使用JDBC数据源和操作数据库的演示。(本页)

 

编码和解码

     1. 构建和使用编码解码框架。

 

工具

    1.增加Timer和HttpClient的示例。(2012-01-16)

       介绍在XWorker中编写一些小工具。

 

   发表时间:2012-01-12   最后修改:2012-02-07

XWorker介绍

    XWorker是一个免费开源的软件,XWorker研究智能系统,XWorker是一个没有截止日期项目。

 

    XWorker最初偏向于基础的研究,并且这些基础的研究可能是非正统的,是更多的偏向于哲学的(科学哲学)。比如计算机智能系统会和我们有一样的世界观么(该问题已研究完毕)?事物的线性问题;悲观论在智能系统中的意义;线程和进程存在的哲学意义;DNA......,太多了。

 

    不过呢,哲学大多是思想,是我们创建各种事物的原始依据,随着时间的发展,它也会慢慢的被遗忘......,XWorker更是如此,支撑XWorker的根本依据(元事物)在使用XWorker中也几乎不会被提起了。

 

    所以目前XWorker有两个主要方向,一是实用性,要创建各种实用的事物,二是智能系统的一个哲学问题还是没有解决:如何成为智能?由于哲学比较个人化,所以在推广中不是重点,现在的重点是如何让XWorker变的更加实用,先解决如何成为程序员的工具。

 

XWorker编程的优点

     在完成了第一个阶段的研究后,现在XWorker进入了积累阶段,在这个阶段里主要是以实用性为主,会有大量的实用事物被创建出来。

     使用XWorker有下面的一些优点:

  1. 编写程序简单
    随着XWorker的积累,编写程序所需的代码(Java、脚本)等将会减少,编程的过程主要是配置数据的过程。
    比如XWorker最新的DataObject(数据对象)技术会使开发数据管理方面的软件变的简单。
    比如使用SWT编写窗体在XWorker中可以通过编写窗体的数据(可理解为XML),如Apache的HttpClient或Mina等,我们可以把他们定义成XWorker中的事物(XML的结构),通过这些事物从而简单的使用HttpClient或Mina等。
    总之使用XWorker,你可以把已有的模块集成到XWorker中,从而能够更加方便简单的使用他们。
     
  2. XWorkre适合编写框架工具和使用框架
    比如在你可以在XWorker定义和使用一个WEB框架,或者任何其他你想要的框架,最主要的是在XWorker中可以随时编写修改框架随时使用它们,不需要编译和发布等。
    在XWorker中目前SWT、WEB和DataObject是主要的框架事物。
     
  3. 无处不在的帮助和辅助
    也许是为了解决自己的健忘症,昨天写的程序今天可能就已经忘记为什么要这么写了,尤其是将要面对一个混乱的、庞大的系统,唯一个办法就是通过当前事物找到线索。
    所以在XWorker中编辑框的标题是编辑表单的帮助,输入框的标签有输入属性的帮助,任何一个SWT程序中的控件可以直接找到这个控件的定义,不过即使这样好像还是比较健忘,所以需要更好的辅助系统-理想中的而又实现不了的智能辅助工具。
    XWorker中的辅助功能主要有:为事物的结构定义菜单,通过菜单处理事物;事物模板、事物特征、事物笔记等便于编辑事物的工具等。
     
  4. 随心所欲
    XWorker基于自称的‘面向事物’,面向事物的特点就是一个事物你认为它是什么就是什么,所以在XWorker中任何一个事物都可以是WEB程序,任何一个事物都是可以SWT程序,你可以这么认为但不保证结果,呵呵。
    XWorker的自由性还包括XWorker的元系统是非常简洁的,因此即使是在运行期你也可以修改系统几乎全部功能,比如XWorker的IDE是可以在运行期修改和添加功能的,但同样修改基础事物时要小心,可能修改一个事物就会影响到全部事物。   

    以上是XWorker的一些文字介绍,估计不会引起太多兴趣,所以下面将不定期的放出一些XWorker的实用模块的介绍,希望通过这些模块你们能够对XWorker产生兴趣。

0 请登录后投票
   发表时间:2012-01-12   最后修改:2012-01-12

下面来点实用的吧。

 

XWorker中的数据对象在采用了Extjs的DataStore的思想后也增加了DataStore,发现这个东西真的很好用,可以大大扩展程序的灵活性和使用的简单性。下面是一些视频和截图,请观看。

 

以上视频介绍了DB数据对象、CSV数据对象、Map数据对象以及简单工作台。

 

下面是一些控件的截图。

日期选择控件:

 

多选下拉框:

 

树形下拉框:

 

分页面板,示例里用于查询结果翻页和编辑多条记录时数据前后切换:

 

Extjs中数据对象的应用:

 

目前数据对象有两套实现,一个是SWT一个是Extjs,上面是一个Extjs的截图。

 

0 请登录后投票
   发表时间:2012-01-12  
貌似Flash看不到嘛。

数据对象只是XWorker的一部分,后面还会有一些其他模块的介绍。



0 请登录后投票
   发表时间:2012-01-12  
项目演示网址有吗?
0 请登录后投票
   发表时间:2012-01-13  

XWorker的网站是www.xworker.org,上面有演示的视频。不过网站中的下载地址目前还是无效的,可以先看看介绍。

 

XWorker是一个为我们自己而写的程序,作为一个程序员,写一些诸如代码生成的工具是经常的事。

 

从我的角度上看,为自己写程序就没有那么多套路了,也没有什么明确的需求,所以XWorker做到想写就可以随时写,省去准备开发环境和编译部署等麻烦,并且要有更大的自由度和简洁性。

 

基于以上原因XWorker目前不适合编写大型的商业应用,主要是因为为自己写的程序质量没有很高的要求,比如有一个输入只能输入数字控件,我会觉得输错了老是提示错误很烦,故不加入数字校验,另外大量使用Groovy脚本和程序的动态解析等也会降低性能,比如XWorker中一个带有Action的简单动态网页(Groovy+Freemarker)的耗时在0.0001-0.001秒左右。

 

目前XWorker还是积累阶段,在这个阶段主要是功能和诸如,需要大家的支持,因此不管是批评还是建议,请多多提出宝贵意见。

 

 

0 请登录后投票
   发表时间:2012-01-13  
没看懂,做什么的?解决什么问题?在什么时候用?
0 请登录后投票
   发表时间:2012-01-13  
这种执着的精神,值得学习
有时间了解下
0 请登录后投票
   发表时间:2012-01-13  

下面介绍一下在XWorker中设置JDBC数据源和使用数据库,从这个示例里应该可以看到XWorker编程的一些特点。

 

1. 首先是建一个JDBC数据源。
    使用xworker:db:jdbc.DataSource作为描述组合(结构)创建一个TestDataSource.

 

2. 创建测试程序。

    使用xworker:core:things.lang.MetaDescriptor3创建一个TestDbContext事物,编辑它的两个动作(方法)log和queryUser,log用于打印驱动的名称,queryUser用于查询用户表用户的名称。

 

其中数据源的调用类似于面向方面的编程,数据源嵌入到方法上的动作上下文中,动作上下文是在动作的执行前和执行后执行的程序,在动作上下文的作用下,调用数据库的程序不用关心连接的获得、释放以及事务的问题。

 

3. 测试程序使用XML展示如下。

<thing name="TestDbContext" label="TestDbContext" descriptors="xworker:core:things.lang.MetaDescriptor3">
    <actions name="actions">
        <Log varName="con.getMetaData().getDriverName()" name="log" message="DriverName=">
            <contexts>
                <DataSouceActionContext name="dataSource" connectionName="con" dataSourcePath="example:dataobject:db.TestDataSource"/>
            </contexts>
        </Log>
        <GroovyAction name="queryUser" code="def pst = null;
            def rs = null;

            try{
                pst = con.prepareStatement(&quot;select name from TBLTESTUSER&quot;);
                rs = pst.executeQuery();
                while(rs.next()){
                    log.info(&quot;userName=&quot; + rs.getString(&quot;name&quot;));
                }
            }finally{
                if(rs != null){
                    rs.close();
                }
    
                if(pst != null){
                    pst.close();
                }
            }">
            <contexts>
                <DataSouceActionContext name="dataSource" connectionName="con" dataSourcePath="example:dataobject:db.TestDataSource"/>
            </contexts>
        </GroovyAction>
    </actions>
</thing>

 4. 调用测试程序。

 

5. 总结

    a. 在XWorker中做任何事(比如编程)是编辑事物的过程,可以通过想象使用XML编辑器编辑XML来理解XWorker中编辑事物的过程,事物编辑器能够大大降低开发的难度,因为编辑器本身就是一个重要的帮助文档。

    b. XWorker中的动作(程序)可以使用多种方式实现,比如log输入日志是不需要编写代码的,是通过编辑类似XML这样的数据实现的,而queryUser则是通过Groovy脚本实现的。在XWorker中还可以使用Java、JavaScript,也可以加入其他语言,不过由于本人经常使用Groovy在关键性能点使用Java,故其他语言目前还不多见。

0 请登录后投票
   发表时间:2012-01-13  
大哥,你说了半天,我还是不知道你这玩意儿是干什么用的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics