DXL之通过程序修改Domino的设计
需要注意以下几点:
1、代理重新导入后
a)打开设计时,会提示代理没有签名,无法打开,在Web上运行代理的时候,服务器立即宕机。解决方法:用程序打开设计元素文档,并对其进行签名。
b)若原代理设置了两个名字(如:“保存代理|AG_SaveDoc”),导入后代理的名字会被修改为“保存代理 | AG_SaveDoc”,在设计页面中,代理的英文名前面自动加了一个空格,但这样并不影响代理的调用,只是在KOA的接口中无法正常获取到该设计。解决方法:用程序打开设计元素文档,修改$Title域。
2、视图重新导入后,若视图的名称(注意,不是别名)产生有冲突,导入的视图会自动被重命名为“原视图名字”+“/”+“当前用户账号”(如:“按部门”会被修改为“按部门/CN=雪浪狐/O=Dev”),若被重命名后的名字仍然有冲突,这样,在导入的程序中就报DXL导入失败的错误。解决办法:用程序打开设计元素文档,修改$Title域。
3、当导出的设计代码比较多的时候,导出代码到内存的时候,会有一定的延缓,若后续的代码直接访问内存中的变量的时候,往往容易发生错误。解决方法:将导出的代码先放到一个临时的文件中,然后在从文件中读取内容到内存中。
代码样例片断:
导入代码程序
Dim stream As NotesStream
Set view = db.GetView("SYS_VH_DesignByName")
Set doc = view.GetDocumentByKey(elemName, True)
If Not doc Is Nothing Then
Set stream = ss.CreateStream
Call stream.Open("c:\$$lksdesigninfo.dxl", "UTF-8") '导出文件为了解决前面提及的缓冲问题
stream.Truncate '清空文件中原有的内容
Set exporter = ss.CreateDXLExporter(doc, stream)
Call exporter.Process '将代码导出到文件中
stream.Close
Set stream = ss.CreateStream
Call stream.Open("c:\$$lksdesigninfo.dxl", "UTF-8")
elementCode= stream.ReadText '读取文件内容
'以下代码获取该设计元素的XML片断
elemType = Strrightback(rtnVal, "</")
elemType = Strleft(elemType, ">")
elementCode = "<" & elemType & " " & Strright(elementCode, "<" & elemType & " ")
elementCode = Strleftback(elementCode, ">")
If elementCode <> "" Then
elementCode = elementCode & ">"
End If
Call stream.Close
Kill "c:\$$lksdesigninfo.dxl"
End If
导入代码程序
Dim importer As NotesDXLImporter
codeTxt = {<?xml version='1.0' encoding='utf-8'?>} & Chr(10)
codeTxt = codeTxt & {<!DOCTYPE database SYSTEM 'xmlschemas/domino_6_5_3.dtd'>} & Chr(10)
codeTxt = codeTxt & {<database xmlns='http://www.lotus.com/dxl' version='6.5' maintenanceversion='3.0'>} & Chr(10)
codeTxt = codeTxt & elementCode '将前面获取的元素代码XML片断加入
codeTxt = codeTxt & "</database>" & Chr(10)
Set view = db.GetView("SYS_VH_DesignByName")
Set stream = ss.CreateStream
Call stream.WriteText(codeTxt) '在流中写入代码信息
Set importer = ss.CreateDXLImporter(stream, objDb)
importer.DesignImportOption = DXLIMPORTOPTION_CREATE '设置以新增的方式导入设计
Call importer.Process '导入
Call stream.Close
If Isarray(newList) Then 'newList中保存了刚导入的所有设计元素的名称
newList = Com_UniqueTrim(newList)
Forall o In newList
Set doc = view.GetDocumentByKey(o, True)
If doc Is Nothing Then
Set doc = view.GetDocumentByKey(" " & o, True) '代理中的元素名称中可能会被添加了空格
End If
If Not doc Is Nothing Then
If doc.HasItem("$TITLE") Then '修改设计元素中的$TITLE域
title = doc.GetItemValue("$TITLE")
hasChg = False
If Instr(title(0), " | ")>0 Then
title(0) = Com_ReplaceSubstring(title(0), " | ", "|")
hasChg = True
End If
If Instr(title(0), "/CN=")>0 Then
tmpStr = Strright(title(0), "/CN=")
If Instr(tmpStr, "|") Then
title(0) = Strleft(title(0), "/CN=") & "|" & Strright(tmpStr, "|")
Else
title(0) = Strleft(title(0), "/CN=")
End If
hasChg = True
End If
If hasChg Then
Call doc.ReplaceItemValue("$TITLE", title)
End If
End If
Call doc.Sign '对设计进行签名
Call doc.Save(True, True)
End If
End Forall
End If
DXL之通过程序修改Domino的设计的更多相关文章
- IBM应该请我去做Domino产品设计架构师
作者: 亓锋 2012年11月19日16:56 来源: 速途专栏 ...
- 实验五 含有控制信号的计数器VHDL设计
一.实验目的 学习计数器的设计.仿真和硬件测试,进一步熟悉VHDL设计技术. 二.实验仪器与器材 计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套. 三.实验 1. 基本命题 在 ...
- 如何开发Domino中的WebService
在domino中写webservice可以使用LotusScript,也可以使用java,由于LotusScript API提供的功能多数都是操作domino数据库中文档的,在web service中 ...
- [搜片神器]使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器:http://www.sosobta.com 大家可以给提点意见... 出售商业网站代码,万元起,非诚勿扰,谢谢. 联系h31h31 a ...
- 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计
沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...
- C#WinCE程序(.NET Compact Framework 3.5)项目重构面向抽象设计
重构关注点 遵循开闭原则 面向抽象设计 实现设备程序端可动态配置 重构的需求 领导想省事提出需求,将现有PDA程序修改为支持PC端由电器工程师根据实际的生产流程可配置,PDA程序在读取配置文件后动态生 ...
- [LeetCode] Domino and Tromino Tiling 多米诺和三格骨牌
We have two types of tiles: a 2x1 domino shape, and an "L" tromino shape. These shapes may ...
- [转载]资深程序员点评当前某些对Lotus Domino 的不实评论
实现机关办公自动化工作需要计算机技术的支持,在计算机软件范围中,有网络操作系统软件.数据库软件和开发工具等基本系统软件,在此基础上开发出适合本单位使用的应用软件.对如何选用系统软件,笔者没有发言权,但 ...
- Domino(群组工作软件)
ylbtech-Miscellaneos: Domino(群组工作软件) “Domino”是一种群组工作软件.使用了Domino的服务器就叫Domino服务器Domino的功能强大,界面丰富,主要用于 ...
随机推荐
- MySQL 查询优化简记
今天尝试对一张MySQL表做查询优化, 500W数据 但是发现加了索引比不加索引使用全表扫描还慢, 上网查, 据说是因为需要回表, 因为没有用到 using index(覆盖索引), 而回表查询是随机 ...
- 【BZOJ】【3339】Rmq Problem
离线+线段树 Orz Hzwer,引用题解: 这一题在线似乎比较麻烦 至于离线.. 首先按照左端点将询问排序 然后一般可以这样考虑 首先如何得到1-i的sg值呢 这个可以一开始扫一遍完成 接着考虑l- ...
- 一些NLP相关的JD,作参考
NLP 应用研发工程师 - AI Lab工作城市: 上海岗位描述:1.用户搜索意图识别,分词和词性标注,实体词标注 2.利用机器学习.NLP 技术优化文本分类.语义理解及信息抽取岗位要求:1.有自然语 ...
- 硬链接(hard link)和符号连接(symbolic link)
inode ====== 在Linux系统中,内核为每一个新创建的文件分配一个inode,每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置.文 ...
- 对Kalman(卡尔曼)滤波器的理解@@zz
1.简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他 ...
- pThreads线程(二) 线程同步--互斥量/锁
互斥量(Mutex)是“mutual exclusion”的缩写.互斥量是实现线程同步,和保护同时写共享数据的主要方法. 互斥量对共享数据的保护就像一把锁.在Pthreads中,任何时候仅有一个线程可 ...
- 技能|三次简化一张图:一招理解LSTM/GRU门控机制
作者 | 张皓 引言 RNN是深度学习中用于处理时序数据的关键技术, 目前已在自然语言处理, 语音识别, 视频识别等领域取得重要突破, 然而梯度消失现象制约着RNN的实际应用.LSTM和GRU是两种目 ...
- [转]Python机器学习工具箱
原文在这里 Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播 ...
- mahout0.7 示例运行纪实
http://1992mrwang.blog.51cto.com/3265935/1205282 运行太不容易了 所以要记下来以免后面忘记了 首先是数据 vim testdata.txt 第一列为Us ...
- [转]学习块格式化上下文(BlockFormattingContext)
原文:https://www.cnblogs.com/elcarim5efil/p/4745796.html 格式化上下文 格式化上下文( formatting contexts )├── 块级格 ...