程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 在Java中使用groovy語言作為動態規則表達式

在Java中使用groovy語言作為動態規則表達式

編輯:關於JAVA

由於在工作流設計中需要為條件分支設定條件表達式,所以需要可以動態執行的語言腳本作為工作流的規則引擎.工作流條件分支純粹使用sql腳本肯定是不行的,經過試驗,groovy的腳本可以返回為Java接受的變量.在具體的工作流實現中,我們既可以把groovy的腳本單獨存放在文本文件,也可以將腳本直接存放在數據庫中,在使用的時候再取出來,當然,可可以放在XML文件中.

以下是Java調用groovy腳本的實例:

  1. package org.openjweb.core.groovy.test;
  2. import groovy.lang.GroovyClassLoader;
  3. import Java.io.File;
  4. public class InvokeGroovy {
  5. public static void main(String[] args) {
  6. ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();
  7. GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
  8. try
  9. {
  10. //從文件中讀取
  11. //Class groovyClass = groovyCl.parseClass(new File("D:/project/openjweb/src/Java/org/openjweb/groovy/Foo.groovy"));
  12. //直接使用Groovy字符串,也可以獲得正確結果
  13. //Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.groovy.test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return 23}}");
  14. Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.groovy.test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return 2+2>1}}");//這個返回true
  15. IFoo foo = (IFoo) groovyClass.newInstance();
  16. System.out.println(foo.run(new Integer(2)));
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }

下面是Foo.groovy的文本:

  1. package org.openjweb.groovy;
  2. import org.openjweb.core.groovy.test.IFoo;
  3. class Foo implements IFoo
  4. {
  5. public Object run(Object foo)
  6. {
  7. return 3+2
  8. }
  9. }

從上面的代碼看出,可以直接執行字符串的groovy腳本,運行後返回運算結果,例如2+2>1會返回true.

使用Groovy或 Jruby動態語言腳本作為規則引擎解決方案將會越來越普及.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved