代理同时调用多次执行相同的代码

时间:2019-05-14 12:19:15

标签: java lotus-domino ibm-domino

我有一个生成文档的Java代理。我还为这些文档提供了一个自定义的唯一跟随编号,从1开始,每次递增+1。我有一个获取最后一个号码的视图,我拿了这个号码并将其递增一个。因此,每当代理运行时,它都会递增此数字,这是通过此问题底部的一段代码来实现的。有时同时调用此代理,这会导致获得相同的号码。例如,我有一些文档,其编号为1001,是4倍,而不是1001、1002、1003、1004。

我试图查看一个代理是否一次可以运行,但这仅适用于计划的代理。

我用来生成唯一编号的代码是:

String ReturnValue = "";

                View nvwVolgnr =  iOrderDB.getView("Volgnummer");
                lotus.domino.Document docVolgnr = nvwVolgnr.getDocumentByKey("Order");
                if ( docVolgnr!=null){
                    String strVolgnr = docVolgnr.getItemValue("Volgnummer").toString();

                     //System.out.println("strVolgnr " + strVolgnr);

                    //Object intVolgnr = docVolgnr.getItemValue("Volgnummer");

                    strVolgnr = strVolgnr.replace("[", "");
                    strVolgnr = strVolgnr.replace("]", "");

                    double intVolgnr = Double.parseDouble(strVolgnr);

                    strVolgnr = strVolgnr.replace(".0", "");

                    //System.out.println("strVolgnr " + strVolgnr);

                    strVolgnr = "000000" + strVolgnr;
                    //System.out.println("strVolgnr " + strVolgnr);

                    strVolgnr = strVolgnr.substring(strVolgnr.length() - 6);
                    ReturnValue = strVolgnr;

                    intVolgnr = intVolgnr + 1;
                    Double dblVolgnr = new Double(intVolgnr);

                    //System.out.println("strVolgnr " + strVolgnr);

                    //Object objVolgnr =  intVolgnr;

                    docVolgnr.replaceItemValue("Volgnummer", dblVolgnr);
                     if (docVolgnr.save())
                        {

                        }

即使此代理同时运行,有没有办法获取唯一编号(带有增量)

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是设置一个事实点:这可以是额外的本地代理,文件,数据库或API。您可以从任何这些号码中获取下一个号码。

这意味着您可以设置其中之一来为座席提供下一个号码。由于此操作发生在单个位置,因此您将不再有任何重复项。

如果不需要增加数字,但每个数字都需要一个唯一的数字,则可以查看UUID。但是我相信事实并非如此。

相关问题