使用COM数据控件从Siebel获取附件。
SiebelBusObjectInterfaces.SiebelDataControl sblDataControl = new SiebelBusObjectInterfaces.SiebelDataControl();
bool success = sblDataControl.Login("host=\"siebel.TCPIP.None.None://bla bla bla /EAIObjMgr_enu\"", "karephul", getPassword());
string errorCode = sblDataControl.GetLastErrCode() + " " + sblDataControl.GetLastErrText();
SiebelBusObjectInterfaces.SiebelBusObject oBO;
SiebelBusObjectInterfaces.SiebelBusComp serviceRequest;
SiebelBusObjectInterfaces.SiebelBusComp actionAttachment;
oBO = sblDataControl.GetBusObject("Action");
actionAttachment = oBO.GetBusComp("Action Attachment");
success = actionAttachment.ActivateField("Activity Id");
success = actionAttachment.ActivateField("ActivityFileName");
success = actionAttachment.ClearToQuery();
success = actionAttachment.SetSearchSpec("Activity Id", "3-QOUKDD"); // hard code for now.
success = actionAttachment.SetSearchSpec("ActivityFileExt", "txt");
success = actionAttachment.ExecuteQuery(1); // ForwardOnly = 1, I guess;
if (actionAttachment.FirstRecord())
{
string fileName = actionAttachment.GetFieldValue("ActivityFileName");
string fileLoc = actionAttachment.InvokeMethod("GetFile", "ActivityFileName");
}
以下代码获取相应的文件并将其保存在服务器的临时文件夹中,并为我提供完全限定的路径。
string fileLoc = actionAttachment.InvokeMethod("GetFile", "ActivityFileName");
有没有办法让文件到我的本地机器?
上下文
此代码是用C#编写的,我们在客户端运行此代码,该代码无权访问服务器的临时目录。
由于 Karephul
答案 0 :(得分:1)
由于您通过datacontrol连接到http,这相当于连接到瘦客户端。如果通过专用客户端连接,则可以将文件直接保存到系统中。
上述3种解决方案可行,但如果附件大小不成问题,我建议您通过电子邮件发送文件。
答案 1 :(得分:0)
在与Siebel工作的一些人交谈之后,我发现使用COM API我无法将文件送到本地机器。
选项:
1.将temp文件夹设为public并获取文件。
2.要求Siebel团队公开Web服务以获取该文件。
3.要求Siebel团队提供下载文件的REST类型链接。