MethodAction.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * @author GJ
  3. */
  4. urule.MethodAction=function(rule){
  5. this.parameters=[];
  6. this.rule=rule;
  7. this.init();
  8. };
  9. urule.MethodAction.prototype.init=function(){
  10. this.container=$("<span>");
  11. this.nameContainer=$("<span>");
  12. this.container.append(this.nameContainer);
  13. this.nameContainer.css({
  14. "color":"darkblue"
  15. });
  16. };
  17. urule.MethodAction.prototype.initData=function(data){
  18. if(!data){
  19. return;
  20. }
  21. this.bean=data["beanId"];
  22. this.name=data["beanLabel"];
  23. this.method=data["methodName"];
  24. this.methodLabel=data["methodLabel"];
  25. var parameters=data["parameters"];
  26. this.parameterCount=0;
  27. if(parameters){
  28. this.parameterCount=parameters.length;
  29. }
  30. if(this.parameterCount===0){
  31. URule.setDomContent(this.nameContainer,this.methodLabel);
  32. var parameterLabel=$("<span style='color:gray'>(无参数)</span>");
  33. this.container.append(parameterLabel);
  34. }else{
  35. URule.setDomContent(this.nameContainer,this.methodLabel+"(");
  36. }
  37. if(this.parameterCount==0){
  38. return;
  39. }
  40. for(var i=0;i<this.parameterCount;i++){
  41. var p=parameters[i];
  42. if(i>0){
  43. var comma=$("<span>;</span>");
  44. this.container.append(comma);
  45. }
  46. if(this.parameterCount>0){
  47. var seqLabel=$("<span style='color:purple'>&nbsp;"+p["name"]+":</span>");
  48. this.container.append(seqLabel);
  49. }
  50. var parameter=new urule.MethodParameter(this.rule);
  51. this.parameters.push(parameter);
  52. this.container.append(parameter.getContainer());
  53. parameter.initData(p);
  54. }
  55. this.container.append(")");
  56. };
  57. urule.MethodAction.prototype.toXml=function(){
  58. if(!this.name || this.name==""){
  59. throw "请选择要执行的方法!";
  60. }
  61. var xml="<execute-method bean=\""+this.bean+"\" bean-label=\""+this.name+"\" method-label=\""+this.methodLabel+"\" method-name=\""+this.method+"\">";
  62. for(var i=0;i<this.parameters.length;i++){
  63. var p=this.parameters[i];
  64. xml+=p.toXml();
  65. }
  66. xml+="</execute-method>";
  67. return xml;
  68. };
  69. urule.MethodAction.prototype.getContainer=function(){
  70. return this.container;
  71. };