天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 2959|回复: 4

[性能] 平台是否可对方法做synchronized~~~~

[复制链接]
jariy 发表于 2011-10-20 14:54:21 | 显示全部楼层 |阅读模式
平台是否可对方法做事务控制,如下面的方法,如果我有多个地方同时调用此方法,但是我只希望数据库里只会有10条记录,那么能否像写java代码一样加个synchronized ,这样当某个地方A调用此方法时,别的调用此方法的地方处于等待队列状态,只有等A执行完后再轮到队列的一、二、三依次执行。
  1. function insertData(){
  2.         var process = new Packages.cn.myapps.core.dynaform.dts.datasource.ejb.DataSourceProcessBean();
  3.         var delsql=" delete from A ";
  4.         process.remove("gzjwoa",delsql,getApplication());
  5.         for(var i=0;i<10;i++){
  6.                 var insql=" insert into A......";//这里的做插入的sql语句
  7.                 process.createOrUpdate('gzjwoa',insql,getApplication());
  8.         }
  9. }
复制代码
admin 发表于 2011-10-21 10:34:11 | 显示全部楼层
您好,直接用宏语言不能实现线程安全。实际也跟宏语言的应用不相符。如果您需要实现线程安全可以自己写一个java类去处理。java类中直接调用document相关的处理方法实现表单数据插入。同时在平台中直接调用这个java类就可以实现线程安全。
 楼主| jariy 发表于 2011-10-21 10:46:14 | 显示全部楼层
能否给个在函数库里调用自己写的java类的代码示例.
 楼主| jariy 发表于 2011-10-21 10:54:53 | 显示全部楼层
顺便再给我点java类里怎么调用你们平台的数据库查询的代码

  1. package exampleinfo;

  2. public class TestSaveQuarterDetail {
  3.         private void saveDetail_rc(){
  4.                
  5.         }
  6.         private void saveDetail_zd(){
  7.                
  8.         }
  9.        
  10.         public void saveQuarterDetail(String docid){
  11.                 String dsql="select * from TLK_RS_C_QUARTER where id='"+docid+"'";
  12.                
  13.         }
  14. }
复制代码
比如我有这样一个查询语句我要怎么将结果查询出来,贴点示例给我吧
admin 发表于 2011-10-21 11:50:09 | 显示全部楼层
您好,以下是我做的一个关于往平台“OA办公管理系统(精简版)”模板中的通知公告表单插入一条数据的例子.关于 java类内容如下:
package exampleinfo;

import java.util.Map;

import javax.servlet.http.HttpSession;

import com.opensymphony.xwork.ActionContext;

import cn.myapps.constans.Web;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.dynaform.document.ejb.DocumentProcess;
import cn.myapps.core.dynaform.document.ejb.DocumentProcessBean;
import cn.myapps.core.dynaform.form.ejb.Form;
import cn.myapps.core.dynaform.form.ejb.FormProcessBean;
import cn.myapps.core.user.action.WebUser;

public class Testsy {
        public static synchronized void insertinfo(){
                ActionContext context = ActionContext.getContext();
                Map<?, ?> session = context.getSession();
                WebUser user = (WebUser) session.get(Web.SESSION_ATTRIBUTE_FRONT_USER);//获取当前登录用户信息
                FormProcessBean formProcess = new FormProcessBean();
                try {
                        Form form = (Form) formProcess.doView("11de-b653-84d844a2-ae1e-9548232189b7");//跟进表单ID查询表单信息
                         DocumentProcessBean dprocess = new DocumentProcessBean("11de-f053-df18d577-aeb6-19a7865cfdb6");//获取document业务操作类。参数是当前软件applicationID.
                          Document doc = dprocess.doNew(form,user,new cn.myapps.base.action.ParamsTable());//new一个document对象
                          //插入一条数据
                          doc.setIstmp(false);
                          doc.addStringItem("主题","ddddd");
                          dprocess.doCreate(doc);//插入数据
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }  
          
          
        }
}

公有函数调用这个java类内容如下:
function inserinfo(){
   var test = new Packages.exampleinfo.Testsy();
   test.insertinfo();
}

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 11:30

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表