`
searun
  • 浏览: 177046 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Beanshell介绍

    博客分类:
  • JAVA
阅读更多

由于jbpm使用了beanshell作为其在jpdl中的脚本语言,所以特地看了一下beanshell这门脚本语言,看来以后确实还不错啊。下面是我这两天看的一些对于这门脚本语言的看法。
既然是特地为java设计的脚本语言,所以当然它与java有着很深的关系,有时候你甚至可以看作就是java的解释器。它的语法融合了java的严谨和脚本语言的方便和灵活,使得这门脚本语言可以象胶水一样用在如测试等地方,或者做快速的原型开发。它可以使用象java一样的强定义,也可以使用象脚本语言一样的弱定义,当然,两者会有一些不同(如作用域),但是大体上都是差不多的。好了,我们来看一个具体的实例:

foo  =   " Foo " ;    
four 
=  ( 2   +   2 ) * 2 / 2 ;
print( foo 
+   "  =  "   +  four );   //  print() is a BeanShell command

//  Do a loop
for  (i = 0 ; i < 5 ; i ++ )
    print(i);   

//  Pop up a frame with a button in it
button  =   new  JButton(  " My Button "  );
frame 
=   new  JFrame(  " My Frame "  );
frame.getContentPane().add( button, 
" Center "  );
frame.pack();
frame.setVisible(
true );

从上面的一些样例来看,beanshell是不用强类型定义的,解释器会自己在运行的时候自动加上相应的具体的类型。这个弱类型定义带来的一个好处就是可以不用重载函数而是直接使用了,如下面的例子:

add( a, b )  ... {
    
return  a  +  b;
}


foo 
=  add( 1 2 );             //  3
foo  =  add( " Oh " "  baby " );    //  "Oh baby"

beanshell中有一些关键字非常的有用,比如下面的this,它就可以返回一个具体的实例,从而实现如其他脚本语言中的闭包等功能。函数也是可以嵌套的。

foo()  ... {
    print(
" foo " );
    x
= 5 ;

    bar() 
... {
        print(
" bar " );
    }


    
return   this ;
}


myfoo 
=  foo();     //  prints "foo"
print( myfoo.x );  //  prints "5"
myfoo.bar();       //  prints "bar"

更多的内容如作用域,接口定义,更多的关键字等还是看具体的用户手册吧,不多,估计在用的时候也够用了。

在jbpm的jpdl定义文件中,使用了beanshell作为其脚本语言来增强其功能,主要使用的地方包括decision节点决策,还有就是event中,比如下面简单的离子:

< process-definition >
  
< event  type ="node-enter" >
    
< script >
      System.out.println("this script is entering node "+node);
    
</ script >
  
</ event >
  ...
</ process-definition >

上面定义的结果就是在这个流程定义文件中所有的节点进入的时候会执行<script>包含下的语句,也就是打印一条信息。当在脚本中含有变量定义的时候,我们需要将其用<expression>将其包含起来,如下例:

< process-definition >
  
< event  type ="process-end" >
    
< script >
      
< expression >
        a = b + c;
      
</ expression >
      
< variable  name ='XXX'  access ='write'  mapped-name ='a'  />
      
< variable  name ='YYY'  access ='read'  mapped-name ='b'  />
      
< variable  name ='ZZZ'  access ='read'  mapped-name ='c'  />
    
</ script >
  
</ event >
  ...
</ process-definition >

在decision中,如果是比较简单的语句,也可以直接使用expression写在<decision>中,如下面:
[更正] 下面的用法不是beanshell的语法,而是一种类jsp/jsf EL的表达式语言,具体可以参见expression ,一些关于其的介绍可以参见 J2EE 入门

    < decision  name ="decisionCheckingAndRawReport"
      expression
="#{varProjects.projectOfVirus.included}" >
      
< transition  name ="true"  to ="procCheckingRawReport" />
      
< transition  name ="false"  to ="join1" />
   
</ decision >

更多的相关的用法参考各自的用户手册吧。
beanshell的用户手册:http://www.beanshell.org/manual/contents.html
jbpm的用户手册:http://docs.jboss.com/jbpm/v3/userguide/

分享到:
评论

相关推荐

    BeanShell介绍

    **BeanShell介绍** BeanShell是一款轻量级的Java脚本引擎,它允许用户在运行时动态地编写和执行Java代码。作为一个开源项目,BeanShell在IT行业中被广泛应用于快速原型开发、测试、脚本自动化以及教学等场景。其...

    BeanShell和Mozilla Rhino详细介绍和例子

    BeanShell和Mozilla Rhino是两种在Java环境中用于动态执行和脚本化的工具,它们各自具有独特的特性和用途。 BeanShell是一个轻量级的Java代码解释器,它的主要特点是免费、可嵌入和具备面向对象的脚本语言特性。...

    beanshell的使用,介绍以及源码

    Beanshell 是一个轻量级的Java脚本引擎,它允许你在运行时动态执行Java代码,也可以用作一个灵活的测试工具。它不只支持标准的Java语法,还提供了与Perl、Python等脚本语言类似的便利特性,如命令行变量、简单的控制...

    BeanShell

    - `index.html`:这通常是网页的主入口文件,可能包含了关于BeanShell的一些介绍、教程或者示例代码。 - `WEB-INF`:这是一个标准的Java Web 应用目录结构的一部分,通常包含Web应用的配置文件、类库和Servlet等组件...

    jmeter-BeanShell简介

    【描述】:“本文将详细介绍JMeter的BeanShell组件,包括其使用场景、内置变量和方法,帮助读者掌握如何在接口测试中运用BeanShell进行脚本编写。” 【标签】:“BeanShell Jmeter 接口测试” 【正文】: ...

    BeanShell快速入门Java应用.docx

    #### 六、内置命令介绍 - **print()**:用于打印变量的值,类似于`System.out.println()`,但提供更多格式化输出的功能。 - **show()**:开启或关闭显示每行执行结果的功能。 通过以上内容的学习,读者应该能够对...

    beanshell:Beanshell脚本语言

    BeanShell-简单的Java脚本 BeanShell的官方活动项目主页。注意:待发布新版本唯一推荐的版本是master分支的手动构建。...介绍BeanShell是一个小型的,免费的,可嵌入的Java源代码解释器,具有使用Java编写

    通过spring用beanshell实现java接口示例

    本文将详细介绍如何通过Spring和Beanshell来实现Java接口的动态实现,这对于那些希望在不编写额外Java类的情况下,快速测试或实现某些功能的开发者来说非常有用。 首先,Beanshell是一种轻量级的、开源的Java脚本...

    jmeter利用bean shell加密解密方法.docx

    本文档详细介绍了如何利用 JMeter 结合 BeanShell 脚本进行加密和解密测试,以 RSA 加密算法为例。 首先,进行加密测试。RSA 是一种非对称加密算法,它使用一对公钥和私钥,其中公钥用于加密,私钥用于解密。在 ...

    为Java应用程序加入脚本引擎

    本文将重点介绍BeanShell——一个专为Java应用程序设计的脚本引擎,通过本文的学习,您将能够了解BeanShell的基本功能,并学会如何将其嵌入到您的Java应用程序中。 #### 二、脚本引擎概述 脚本引擎是一种能够解析...

    beashell 手册

    ### BeanShell 手册 #### 引言 BeanShell 是一款功能强大且灵活的轻量级脚本语言,它能够动态地执行 Java 代码。BeanShell 的设计初衷是为了弥补传统编程语言与脚本语言之间的差距,它允许用户在运行时编写、修改...

    Shell脚本8种字符串截取方法总结

    本文将详细介绍8种在Shell脚本中截取字符串的方法,并提供相应的实例代码和操作结果。 1. **# 号截取**:使用`#`运算符,从字符串的左侧开始删除指定模式及其左侧的所有字符。例如,如果我们有一个变量`var=...

    JMETER 逻辑控制器介绍

    本文将详细介绍JMeter中的几种主要逻辑控制器,并探讨它们在性能测试场景设计中的应用。 首先,测试计划的组件执行顺序是理解逻辑控制器工作原理的基础。执行顺序依次为:配置节点、前置处理器、定时器、采样器、...

    Jmeter Bean shell 介绍

    **Jmeter Bean Shell 介绍** 在性能测试领域,Apache JMeter 是一款广泛使用的开源工具,它支持多种测试组件,其中包括 Bean Shell。Bean Shell 是 JMeter 中的一个重要元素,它允许测试人员通过脚本语言的方式执行...

    java字符串长度的求法,附加Java中数据类型转化

    以上介绍了Java中字符串长度的计算方法、如何访问字符串中的特定字符以及不同数据类型之间的转换。这些是Java编程中非常基础也非常重要的知识点。掌握它们可以帮助开发者更高效地处理字符串和其他数据类型的问题。

    jmeter-json.zip

    本篇文章将详细介绍如何在JMeter中处理JSON数据,以及如何利用BeanShell增强JMeter的测试能力。 一、JMeter与JSON处理 JSON因其轻量级、易读写和高效的特性,成为Web服务间通信的首选格式。在JMeter中处理JSON数据...

    Jmeter高级编程技巧与测试实现

    内容概要:本文详细介绍了Jmeter高级编程中的内置函数应用,如返回指定ASCII字符、获取本机IP、生成唯一字符串等;讲解了如何使用Jmeter访问MySQL数据库进行连接配置和查询操作;展示了利用Eclipse编译器测试Java...

Global site tag (gtag.js) - Google Analytics