记录每一次犯傻错误
一、 字段映射失败
此问题是由于某个字段别名与标准不一致或者缺少字段导致,在子转换中输出的字段必须与注释中的一样,如果没有某个字段可以在子转换中处理,可以置为null或者给默认值等
二、 数据库缓存
同步数据时存在上一个数据库的缓存,只需要清理缓存即可
三、webservice请求时没有返回数据
首先检查URL是否正确,不能带?wsdl后缀,再检查requestXml,如果确认没问题,再检查请求头是否正确,可以用soapui调试工具查看请求头信息,具体配置如下图
四、使用AB值转换时null值默认跳过
五、如果一个字段需要映射两次,可以参考剪切字符串
六、接口返回的数据没有用CDATA包装
可以去掉包装及过滤步骤,直接在xmlresult中取值
七、如果某些字段没有或者是常量可以使用增加常量
八、下载代码直接下载压缩包,不然脚本命令会有换行符转义错误
九、PDI在服务器如何dubug
Kitchen.bat /file sync_job.kjb /param:“SYNC_TYPE=DEPT” -level=Debug
或者在需要的地方添加日志输出
十、拼接字段
如果希望将多个字段拼接成一个字段,直接用Concat fields
十一、获取当前时间
十二、三目运算
十三、linux脚本执行异常
如果是换行符导致
dos2unix /data/www/hispdi/pdistart.sh
dos2unix /data/www/hispdi/install.sh
十四、手动执行没问题,定时任务报错(linux)
表现
/data/apps/pdi/spoon.sh:行258: java: 未找到命令
解决
echo $JAVA_HOME
修改spoon.sh把JAVA_HOME写死
if [
O
S
=
"
l
i
n
u
x
"
]
;
t
h
e
n
(
(
(
(
"
/
d
a
t
a
/
a
p
p
s
/
j
d
k
/
j
d
k
1.8.
0
2
01
/
b
i
n
/
OS = "linux" ]; then (((("/data/apps/jdk/jdk1.8.0_201/bin/
OS="linux"];then(((("/data/apps/jdk/jdk1.8.0201/bin/_PENTAHO_JAVA"
O
P
T
−
j
a
r
"
OPT -jar "
OPT−jar"STARTUP" -lib
L
I
B
P
A
T
H
"
LIBPATH "
LIBPATH"{1+$@}" 2>&1; echo KaTeX parse error: Expected 'EOF', got '&' at position 4: ? >&̲3 ) | grep -viE…" >&4 ) 3>&1)| inputtoexitstatus ) 4>&1
else
“/data/apps/jdk/jdk1.8.0_201/bin/$_PENTAHO_JAVA”
O
P
T
−
j
a
r
"
OPT -jar "
OPT−jar"STARTUP" -lib
L
I
B
P
A
T
H
"
LIBPATH "
LIBPATH"{1+KaTeX parse error: Expected 'EOF', got '}' at position 2: @}̲" fi EXIT_CODE=?
十五、同步病人数据存储过程是报错
内层测试从DB拿到数据了但是跑外层权限不足
解决:
内存字段与外层字段不匹配
十六、血糖回写出现字段错误
解决:
PDI返回的是weiteResult而DB返回的是msg不同返回所以null需要修改
修改外层Json数据
修改内层调存过
运行流程:先运行外层访问血糖数据在进入内层运行回血
十七、血糖回写失败(msg返回值为NULL过滤条件不能回写成功)
解决:未给WriteMsg指定类型