|
|
置顶随笔
为了所有玩BizTalk的朋友聚在一起,隆重向大家介绍BizTalk Group (MSN群)。
这里集聚了很多朋友,同时欢迎您的加入!
如果您想显示出上图右边的功能区,请点击如下图所示的“发送闪屏”。
在功能区里,您可以修改自己在群里的昵称。
在我们的群里,请按下面的规则为自己起一个好记的昵称。
您所在的城市或国家㊣您的昵称
当然,您也可以用一个比较方便的命令来实现修改昵称。
如下面所示,在消息输入区中,输入"/nn ......"
/nn 是用来修改昵称的命令。
2008年7月18日
2008年6月24日
运行在测试机上的BizTalk Administrator Tools经常出现下面的错误:
标题: BizTalk Server 2006 管理控制台
------------------------------
此操作无法访问至少一个 MessageBox 数据库。某些结果可能会忽略。
要获取帮助,请单击: http://go.microsoft.com/fwlink/?LinkId=47400&ProdName=Microsoft+BizTalk+Server+2006&ProdVer=3.5.1602.0&EvtSrc=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors&EvtID=ErrorWhenAccessingMsgBox
------------------------------
其他信息:
Operation is not valid due to the current state of the object. (Microsoft.BizTalk.Administration.SnapIn)
------------------------------
按钮:
确定
------------------------------
找来找去,就是让重启动一下管理工具,自己就可以恢复。
I just tried opening the administrative console and out of nowhere got an error "root element is missing (c:\Documents and Settings\user1\Local Settings\Application Data\Microsoft Corporation\Microsoft BizTalk Server 2006\Microsoft.BizTalk.Administration.Snapin.dll.config)".
To resolve this issue, delete this file:
c:\Documents and Settings\user1\Local Settings\Application Data\Microsoft Corporation\Microsoft BizTalk Server 2006\Microsoft.BizTalk.Administration.Snapin.dll.config
The next time you start the BizTalk Server 2006 Administration Console, the Administration.Snapin.dll.config file will be auto created for you.
除了上面的介绍,实在没什么可以参考的资料了!
在没有安装"BizTalk Web Services 发布向导"工具的服务器上部署SOAP Port。
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5734
Date: 2008-6-24
Time: 19:45:53
User: N/A
Computer: GDEIAC-TEST09
Description:
消息引擎无法注册接收位置“/EIAC.EAI.ExpenseContract.WebService/WebService_EIAC_EAI_ExpenseContract_Orchestrations.asmx”的“SOAP”的适配器。请验证接收位置存在,且独立的适配器在可以访问 BizTalk 数据库的帐户下运行。
最好按下面的部署顺序进行。
- 开发环境下
- 开发流程
- 部署流程
- 发布成WebService
- 测试
- 准生产or生产环境下
- IIS中创建App Pool,帐号用BizTalk Application Users中的用户。
- IIS中创建VisualDir,将1.3中的WebService拷备到些目录中。
- IIS中配置Read, Write , Script Running, 配置为2.2的AppPool。
- 试着访问WebService的URL,确认可以Open。
- BizTalk Admin Tools
- 部署BizTalk流程。
- 配置Receive Location。这里输入的WebService路径为2.4中,可以访问的URL(去掉http://servername)。
ok, 问题解决。
2008年5月28日
为了所有玩BizTalk的朋友聚在一起,隆重向大家介绍BizTalk Group (MSN群)。
这里集聚了很多朋友,同时欢迎您的加入!
如果您想显示出上图右边的功能区,请点击如下图所示的“发送闪屏”。
在功能区里,您可以修改自己在群里的昵称。
在我们的群里,请按下面的规则为自己起一个好记的昵称。
您所在的城市或国家㊣您的昵称
当然,您也可以用一个比较方便的命令来实现修改昵称。
如下面所示,在消息输入区中,输入"/nn ......"
/nn 是用来修改昵称的命令。
2008年5月21日
当前项目要求使用java调用.net webservice。
在网上search不到太多相关的资源,只能自己慢慢试了。
经过长达一周的联调,终于实现。
Java Client
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
System.out.println("测试SOAP开始");
Service service = new Service();
Call call = (Call)service.createCall();
String input="Yes";
String endpoint="http://11.11.11.11/CAIE.EAI/UploadExpenseToConstract.asmx";
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://CAIE.EAI.ExpenseConstract.WebServices","ReturnYourInput"));
call.addParameter("input", org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://CAIE.EAI.ExpenseConstract.WebServices/ReturnYourInput");
String res = (String) call.invoke(new Object[] {input});
System.out.println("返回值="+res);
System.out.println("测试SOAP结束");
.Net WebService
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Services.Description;
using System.ComponentModel;
namespace CAIE.EAI.ExpenseConstract.WebServices
{
/// <summary>
/// UploadExpenseToConstract 的摘要说明
/// </summary>
[WebService(Namespace = "http://CAIE.EAI.ExpenseConstract.WebServices/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class UploadExpenseToConstract : System.Web.Services.WebService
{
[WebMethod()]
[SoapRpcMethod(Use = SoapBindingUse.Literal, RequestNamespace = "http://CAIE.EAI.ExpenseConstract.WebServices", ResponseNamespace = "http://CAIE.EAI.ExpenseConstract.WebServices")]
public string ReturnYourInput(string input)
{
string a = input;
System.IO.File.AppendAllText(@"c:\temp.log", "Input=" + input + "\r\n");
return a;
}
}
}
Java 调用 .net 主要是为了后序的 Java 启动 BizTalk流程做准备。
2008年5月14日
这个咋整呢?
错误说明:
OLE DB 错误: OLE DB 或 ODBC 错误 : 无法连接到数据源“[Microsoft][ODBC Excel Driver] 外部表不是预期的格式。;S1000”。。
错误源:
Microsoft OLE DB Provider for Analysis Services 2005
2008年4月14日
还有报障
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 6913
日期: 2008-4-14
事件: 12:14:56
用户: N/A
计算机: GDEIAC-BIZ01
描述:
试图连接到服务器“GDEIAC-SQL01”上的“BizTalkMgmtDb”SQL Server 数据库失败。
错误:“Login failed for user ''. The user is not associated with a trusted SQL Server connection.”
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5410
日期: 2008-4-14
事件: 12:14:57
用户: N/A
计算机: GDEIAC-BIZ01
描述:
出现错误,需要终止 BizTalk 服务。最常见的原因如下:
1) 内存意外不足。
或
2) 无法连接到其中一个 BizTalk 数据库或该连接丢失。
该服务将在 1 分钟内关闭并自动重新启动。如果该出错数据库仍然无法使用,将重复此过程。
错误消息: Login failed for user ''. The user is not associated with a trusted SQL Server connection.
错误源:
BizTalk 主机名: BizTalkServerApplication
Windows 服务名: BTSSvc$BizTalkServerApplication
接到系统管理员报障:
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 6912
日期: 2008-4-9
事件: 19:16:58
用户: N/A
计算机: GDEIAC-BIZ01
描述:
以下存储过程调用失败:“ { call admsvr_ReceiveLocation_GetAllInApp( ?)}”。SQL Server 返回错误字符串:“[DBNETLIB][ConnectionRead (recv()).]一般性网络错误。请检查网络文档。”。
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5641
日期: 2008-4-9
事件: 19:16:58
用户: N/A
计算机: GDEIAC-BIZ01
描述:
消息引擎无法从数据库检索配置。详细信息:“连接失败”。
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5773
日期: 2008-4-9
事件: 19:16:58
用户: N/A
计算机: GDEIAC-BIZ01
描述:
所有接收位置被暂时禁用,因为 MessageBox 数据库或配置数据库不可用。当这些数据库可用时,接收位置将被自动启用。
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5410
日期: 2008-4-9
事件: 19:16:58
用户: N/A
计算机: GDEIAC-BIZ01
描述:
出现错误,需要终止 BizTalk 服务。最常见的原因如下:
1) 内存意外不足。
或
2) 无法连接到其中一个 BizTalk 数据库或该连接丢失。
该服务将在 1 分钟内关闭并自动重新启动。如果该出错数据库仍然无法使用,将重复此过程。
错误消息: [DBNETLIB][ConnectionRead (recv()).]一般性网络错误。请检查网络文档。
错误源:
BizTalk 主机名: BizTalkServerApplication
Windows 服务名: BTSSvc$BizTalkServerApplication
初步分析,是由于网络引起的!可能是数据库重启,或都网络闪断引起!
正在与管理员联系...
2008年3月31日
 又是奇怪的错误!
在生产环境下安装BTS组件,部署不使用VS2005进行部署,而是直接使用BizTalk Admin工具进行!
开始测试。
当接收到指定的消息后,BTS就报错!
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5719
日期: 2008-3-31
事件: 11:46:29
用户: N/A
计算机: GDEIAC-BIZ01
描述:
执行接收管道时出错:“Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”,源:“XML 拆装器”,接收端口:“R_OA_NS_MSG”,URI:“FORMATNAME:DIRECT=TCP:10.16.25.81\PRIVATE$\NS_MESSAGE”,原因: 无法从程序集 <EIAC.OA.NotificationSystem.Schemas, Version=1.0.0.0, Culture=neutral, PublicKeyToken=faf62f0e1206ebb8> 加载文档规范 <EIAC.OA.NotificationSystem.Schemas.NotificationData_XML>。请验证已部署此文档规范的架构并且该架构位于全局程序集缓存中。
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5753
日期: 2008-3-31
事件: 11:46:29
用户: N/A
计算机: GDEIAC-BIZ01
描述:
接收位置“R_OA_NS_MSMQ_Message”(URI 为“FORMATNAME:DIRECT=TCP:10.16.25.81\PRIVATE$\NS_MESSAGE”)上的适配器“MSMQ”接收的消息已挂起。
错误详细信息: 执行接收管道时出错:“Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”,源:“XML 拆装器”,接收端口:“R_OA_NS_MSG”,URI:“FORMATNAME:DIRECT=TCP:10.16.25.81\PRIVATE$\NS_MESSAGE”,原因: 无法从程序集 <EIAC.OA.NotificationSystem.Schemas, Version=1.0.0.0, Culture=neutral, PublicKeyToken=faf62f0e1206ebb8> 加载文档规范 <EIAC.OA.NotificationSystem.Schemas.NotificationData_XML>。请验证已部署此文档规范的架构并且该架构位于全局程序集缓存中。
消息 ID: {1403920C-8604-4B05-AFBA-7372E4B2220C}
实例 ID: {E461A125-C380-497C-9152-CB60EC744B88}
查询GAC

检查Assembly目录

都很正常呀!!!!奇怪了!!
解决:
重启了一下服务器,上现的现象就没有了!非常奇怪!找不到一个很好的解释。

自己的猜测:
由于我为这个流程单独创建了一个Host Instance,而Receive Adapter仍然用的是BizTalkApplicationHost,而这个默认的Host也需要Restart一下,才能加载到新注册的Dll 。

2008年3月4日
这又是什么错?
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5740
日期: 2008-3-4
事件: 13:46:51
用户: N/A
计算机: EIAC-TEMP5
描述:
适配器“SQL”返回一条错误消息。详细信息为“HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "
<Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "?></Root>”。
事件类型: 错误
事件来源: XLANG/s
事件种类: 无
事件 ID: 10034
日期: 2008-3-4
事件: 13:46:52
用户: N/A
计算机: EIAC-TEMP5
描述:
未捕获的异常(请参阅下面的“内部异常”)已经挂起服务“EIAC.OA.NotificationSystem.Orchestrations.Main(a44769cf-20b3-668b-e434-e1b03b6f84c2)”的一个实例。
在管理性地恢复或终止该服务实例前,它将保持挂起状态。
如果恢复了该服务实例,它将从上次持续的状态继续,这可能再次引发同样的异常。
实例 ID: d9c408b3-57ab-48dd-937c-80dd864c1580
形状名称:
形状 ID:
引发异常的位置: 段 -1,进程 -1
内部异常: 处理消息时出错,有关详细信息,请参阅详细资料部分
消息 ID: {2F367584-1D89-4551-A76A-1223E5BB2F4E}
实例 ID: {FA895E7E-1DBA-4293-A0F5-E6DFD753BB3A}
错误说明: HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "
<Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "?></Root>
异常类型: XlangSoapException
源: Microsoft.XLANGs.BizTalk.Engine
目标站点: Void VerifyTransport(Microsoft.XLANGs.Core.Envelope, Int32, Microsoft.XLANGs.Core.Context)
下面是一个堆栈跟踪,用于标识发生异常的位置
在 Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.VerifyTransport(Envelope env, Int32 operationId, Context ctx)
在 Microsoft.XLANGs.Core.Subscription.Receive(Segment s, Context ctx, Envelope& env, Boolean topOnly)
在 Microsoft.XLANGs.Core.PortBase.GetMessageId(Subscription subscription, Segment currentSegment, Context cxt, Envelope& env, CachedObject location)
在 EIAC.OA.NotificationSystem.Orchestrations.Main.segment17(StopConditions stopOn)
在 Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
这几次发现,5470, 5474, 10034 这样的错误,经常会同时出现。10034就不用去管它了。
5470,又是报sqladapter有问题,难道它这么脆弱吗?
测试现象,跟前面的流程一样,主要问题出在当流程有并发执行updategram的update操作时,就会报上面的错误。注意,是并发执行,当并发数>3时,就会引起错误。这是为什么呢?
总之,我还解释不了,但,与以往项目对比发现,主要区别就是定义的数据表ID字段没有设置成PK,改过来,问题就解决了!
 折磨了我一下午,问题就是一个PK。
2008年2月28日
使用BizTalk开发应用系统
 此文献给那些知道BizTalk,但还不知道它能做什么的朋友们!
项目中要完成一个消息服务中心程序,主要完成接收各个系统发过来的消息,根据不同的消息内容,按特定的方式将提醒消息发送出去。发送方式主要有:email, 短信, 即时消息。
现有资源:SMTP服器,短信网管接口程序,OCS消息转发接口程序。
看来,三个发送发式的代码都已经完成了。就差这个消息服务中心了!
想一想,还是用BizTalk吧。开始画图了!!!!....
所做的工作:
在sqlserver上创建了几个表,为了记录消息日志,同时写了对应的几个Insert存储过程。
定义各系统可以传给我什么样的消息!schema. (xsd)
发EMail,直接用BizTalk的SMTP Adapter。
发OC即时消息,直接用MSMQ Adapter,将消息发到它的接收MSMQ中。
发短信,也用MSMQ Adapter,把消息发到短信服务程序的MSMQ中。
中间定义几个消息。
中间定义几个变量。
使用Sql Adapter生成调用使用的消息。
做几个Mapping。
写几行为了显示在Event日志中的C#代码及几个Helper文件。
按需求,画流程图吧!
最后,进行编译、部署、测试。
一切OK !
解决方案:
实际流程图:
运行时对流程执行的监控:
BizTalk代表的概念!
EAI:我用一个简单的流程图,把三个系统(三种消息发送方式)集成在一起了!
SOA:我有一个接收端口,我可以配置这个接收端口从File, FTP,SQL,.... 只要我能访问到的地方读取、监听数据。为你提供转发提醒消息的服务!
ESB:以后,我有更多的流程了,我可以把它们都串起来,完成一件更庞大的工程!
我们的学习团队!
BizTalk Group MSN群 (MSN: group33022@xiaoi.com )
欢迎加入BizTalk Group组织,我们一起提高并进步!

Event Type: Warning
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5740
Date: 2/28/2008
Time: 6:33:04 PM
User: N/A
Computer: LABS
Description:
The adapter "SQL" raised an error message. Details "HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "
<Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "?></Root>".
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Event Type: Warning
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5743
Date: 2/28/2008
Time: 6:33:04 PM
User: N/A
Computer: LABS
Description:
The adapter failed to transmit message going to send port "UpdateSMGPLog" with URL "SQL://labs/NotificationSystem/". It will be retransmitted after the retry interval specified for this Send Port. Details:"HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "
<Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Ambiguous update, unique identifier required Transaction aborted "?></Root>".
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
通过在流程中转出关键几个Message的Xml,发现, 于用Update的消息,数据不全。
<ns0:UpdateOCSLogRequest xmlns:ns0="http://EIAC.OA.NotificationSystem.UpdateOCSLog">
<ns0:sync>
<ns0:before><ns0:OCSMessageLog></ns0:OCSMessageLog></ns0:before>
<ns0:after><ns0:OCSMessageLog StateID="1"></ns0:OCSMessageLog></ns0:after>
</ns0:sync>
</ns0:UpdateOCSLogRequest>
没有Before条件,这就相当于你的sql语句少东西!
update table set StateID=1 where <??????> 人家不知道去更新谁!
找到错误原因后,把对应的流程代码再进行了一下整理。确定再测试时,这个before已经有数据了。
 问题又被解决了!
西煞魄工人
 就差提交了,结果点错了,没存就关了!还得重写!!!!
今日,流程继续开发,把原来的流程增加更多的日志、状态。方便以后查询消息处理结果。但,流程复杂了,问题也就多多了。
Event Type: Error
Event Source: XLANG/s
Event Category: None
Event ID: 10022
Date: 2/28/2008
Time: 5:03:26 PM
User: N/A
Computer: LABS
Description:
Uncaught exception (see the 'inner exception' below) has suspended an instance of service 'EIAC.OA.NotificationSystem.Orchestrations.Main(a44769cf-20b3-668b-e434-e1b03b6f84c2)'.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 7f7a5fc9-882c-41d4-abf1-4098dcf66126
Shape name: Construct msgUpdateOCSLog
ShapeId: 869f1e47-bfc2-46bf-b425-a85cbcc46b06
Exception thrown from: segment 6, progress 2
Inner exception: A failure occurred while evaluating the distinguished field sync.after.OCSMessageLog.StateID against the message part data. The message part data does not contain at least one of the nodes specified by the XPath expression (listed below) that corresponds to the distinguished field. The cause for this error may be that the message part data has not been initialized or that the message part data does not conform to the message part schema. Ensure that the message part data is initialized correctly. XPath expression: /*[local-name()='UpdateOCSLogRequest' and namespace-uri()='http://EIAC.OA.NotificationSystem.UpdateOCSLog']/*[local-name()='sync' and namespace-uri()='http://EIAC.OA.NotificationSystem.UpdateOCSLog']/*[local-name()='after' and namespace-uri()='http://EIAC.OA.NotificationSystem.UpdateOCSLog']/*[local-name()='OCSMessageLog' and namespace-uri()='http://EIAC.OA.NotificationSystem.UpdateOCSLog']/@*[local-name()='StateID' and namespace-uri()='']
Exception type: XPathUpdateException
Source: Microsoft.XLANGs.Engine
Target Site: Void SetDistinguishedField(System.String, System.Object)
The following is a stack trace that identifies the location where the exception occured
at Microsoft.XLANGs.Core.XSDPart.SetDistinguishedField(String dottedPath, Object val)
at EIAC.OA.NotificationSystem.Orchestrations.Main.segment6(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
仔细检查一下错误中提到的消息,它的初始化如下

后面有一赋值操作
msgUpdateOCSLogRequest.parameters.sync.after.OCSMessageLog.StateID = m_strStateID;
通过ErrorLog,错误大至就是发生在这里。

分析一下原因,大至是由于在Mapping中没有对StateID字段赋值,造成它在xml中是不存在的,所以,后面的赋值操作中,用属性去访问时会报错的。如同一个类的成员变量还没有赋值,就去调用这个成员变量的方法一样。
找一个最简单的方法:


以后,在构造有属性的消息时,把这些性都赋上个初值,也为以后调用时创建便利。
2008年2月21日
今日写了一个流程
错误提示如下
Event Type: Error
Event Source: XLANG/s
Event Category: None
Event ID: 10008
Date: 2/21/2008
Time: 9:45:27 PM
User: N/A
Computer: LABS
Description:
Uncaught exception (see the 'inner exception' below) has suspended an instance of service 'EIAC.OA.NotificationSystem.Orchestrations.Main(a44769cf-20b3-668b-e434-e1b03b6f84c2)'.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: ea3c1bab-8383-4bb5-993a-85a7bf05dc66
Shape name: RequestCreateEMailLog
ShapeId: d76938c8-3bb5-408a-9ac5-e0e762bb489b
Exception thrown from: segment 1, progress 37
Inner exception: Exception occurred when persisting state to the database.
Exception type: PersistenceException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void Commit()
The following is a stack trace that identifies the location where the exception occured
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.Commit()
at Microsoft.XLANGs.Core.Service.Persist(Boolean dehydrate, Context ctx, Boolean idleRequired, Boolean finalPersist, Boolean bypassCommit, Boolean terminate)
at Microsoft.XLANGs.Core.ServiceContext.PendingCommit(Boolean ignore, XMessage msg)
at Microsoft.XLANGs.Core.ExceptionHandlingContext.PendingCommit(Boolean ignoreCommit, XMessage msg)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.SendMessage(Int32 iOperation, XLANGMessage msg, Correlation[] initCorrelations, Correlation[] followCorrelations, SubscriptionWrapper& subscriptionWrapper, Context cxt, Segment seg, ActivityFlags flags)
at Microsoft.XLANGs.Core.PortBase.SendMessage(Int32 iOperation, XLANGMessage msg, Correlation[] initCorrelations, Correlation[] followCorrelations, SubscriptionWrapper& subscriptionWrapper, Context cxt, Segment seg)
at EIAC.OA.NotificationSystem.Orchestrations.Main.segment1(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
Additional error information:
A batch item failed persistence Item-ID 7a083b87-980c-4888-8cbc-35b14cef2bc8 OperationType MAIO_CommitBatch Status -1061151998 ErrorInfo The published message could not be routed because no subscribers were found. .
Exception type: PersistenceItemException
Additional error information:
Failed to publish (send) a message in the batch. This is usually because there is no one expecting to receive this message. The error was The published message could not be routed because no subscribers were found. with status -1061151998.
Exception type: PublishMessageException
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
正在研究它出错的原因

问题找到了,从上面的错误信息中可以看到,是由于没有消息的订阅者,这是为什么呢。原来,开发中错误的使用了Direct方式配置流程中的SendPort

我真是太大意了,这也能搞错。(当时看也没看就这么选上了,配置部署时,也没发现少了一个绑定端口)
Direct绑定是Orchestration之间,通过这种把流程中的send / receive进行直接绑定,实现消息在Orchestration中的传递。
把端口重新绑定了一下,问题解决了。

自勉:吃一堑,长一智不。
2008年1月29日
[BTS]WSS+InfoPath+BizTalk 案例
一.目的
通过本文的学习,将带你进入BizTalk与WSS进行整合,完成一次简单的工作流程开发过程。了解BizTalk流程开发的基本过程,了解WSS+InfoPath的应用,了解InfoPath的使用方法,熟悉BizTalk WSS Adapter的使用方法。
二.背景
1.名词解释
WSS
Windows SharePoint Services 是一个用来创建能够实现信息共享和文档协作的Web站点的引擎,从而有助于提高个人和团队的生产力。它是Microsoft Windows Server™ 2003中所提供的信息工作者体系结构的重要组成部分, 为Microsoft Office System和其他的桌面应用程序提供了附加的功能,并能够作为应用程序开发的平台。
InfoPath
InfoPath 2003—Office System 中的新产品—是一个功能强大的程序,它使团队和公司能够通过丰富、动态的表单,高效地收集他们所需的信息。因为 InfoPath 支持使用任何客户定义架构的行业标准的可扩展标记语言 (XML),所以可以在整个企业内和在业务进程之间轻松重用收集到的信息。XML 支持使 InfoPath 用户可以在公司间和业务进程间共享信息,以获得更大的业务影响。
BizTalk
Schema, Pipeline, Adapter, Orchestration, Mapping, Rule, BAM
2.运行环境
Server :
windows 2003 server sp2 , sql server 2005, BizTalk 2006 , IIS , WSS2.0, Office 2003
Client :
Windows XP , Office 2003
三.需求分析
1.处理流程
如果非常详细的写,可以写一份《软件需求说明书》了,这里只把最关键的流程图放在这里。
2.数据定义
采购订单:订单号,填写人,采购产品名称,采购数量,单价,备注,时间
查看生产计划:订单号,产品名称,数量,备注
完成的订单:订单号,填写人,采购产品名称,采购数量,单价,总价,备注
取货表单:订单号,填写人,采购产品名称,采购数量,单价,备注,填写时间,完成时间
3.规则定义
如果订单中产品数量大于50件时,需要通知生产厂家进行生产后,将生产后的产品直接发给销售代理。
4.要求
全部数据保存在WSS的文档库中即可。
四.程序开发
很多BizTalk初学者与我当初一样,不知如何下手,其实,biztalk开发与一般的程序开发基本一样,只是使用的工具不同而已。
与程序开发一样,首先要明确用户需求,从用户需求中找到可以流程化的东西。然后确认用户现有系统中可以提供的接口有哪些,这也是为EAI做准备,缺的接口就找人或自己开发好。biztalk是基于消息的,所以,要根据需求中确定的数据定义来定义流程中要使用到的消息体(schema),以及明确消息之间的关系(map)。根据与各接口对接的方式,选择不同的adapter进行连接。根据业务流程的定义,就可以很快的把Orchestration画好。最后几步当然是部署、测试。
1.消息定义
注意:如果为了后面用到数据有效果验证,以及InfoPath自动生成控件,请为每一个Field设置正确的数据类型。
客户订单

生产计划(用state标记生产结束)

取货单

2. 升级属性
目的:.................................
创建Order的属性定义

属性定义(取关键性字段)

升级消息中对应的字段

其他几个消息也按同样规则定义好相应的属性。
3. 在WSS上建好对应的文档库
4. 使用InfoPath定制表单
点击保存后,选择发布
最完点击完成。
重复上面的步骤,完成其它两个Form表单的设计及发部。

5. 开发流程
根据前面的需求,定制Orchestration。
注意,这里用到了相关性概念(会在以后介绍),先按1,2,3顺序操作。

6. 部署、配置
RcvOrderPort 配置

SndProducePort 配置

RcvProduceResponsePort 配置
SndGoodsPort 配置
五. 测试
新建一个订单
理论上可以按原流程设计走通。
但当前进行测试时发现流程中有逻辑上的问题;
1. 发送到Produce_Form中后,又有一接收端口从这里取数据,这个地方有点问题,觉得应该再增加一个Form用来存ProduceResponse,然后从这个FormList中取数据。
2. 由于定义的Produce_XML的FinishTime类型是xs:datetime,所以生成的InfoPath表单无法打开从SndProducePort发过来的xml,因为这时FinishTime无值。InfoPath会发出警告。
所以整合流程只走通了count < 50 的那部分。

六. 总结
本次实验虽然没有完全成功,但主要是为了介绍一下biztalk + infopath + sps 的一个开发方法,希望能从这个案例中明确使用biztalk进行开发的整体步骤。
下一回会重点研究一下BAM在本流程中的应用,以及InfoPath的相关开技术。
2007年12月20日
BizTalk Group Day
2007年12月20日,北京
BizTalk Group Day 北京站! 今天成功举行.
报名人数:10人
实际参加人数:8人
非常感谢大家的参与! 希望我们继续发扬BizTalk精神.
地点:
成员:
由左向右顺序依次为
北京 ㊣Apenni, 沈阳㊣魔幻天空, 北京㊣ESB, 上海㊣G.L, 上海㊣upzone, 北京㊣YK, 北京㊣deformity
总结:
只有一台DC(Dopod D600),效果太差! 下回要再专业一点!
2007年11月6日
2007年8月3日
昨天听了一天的UML培训,重新学习了一下UML,虽然只有一天的培训时间,但由于一直都在关注UML,并在工作中用到过,所以听起来还是比较轻松的! UML的资料满www都有,这里就不细写了,没什么意义。 把我听课时的一些体会与大家分享一下!有不对的地方请指正。 讲师用的ROSE 我用的UModel 
2007年7月11日
什么是Groove
Office Groove 2007 是一个协作软件程序,适合用于处理从简单的文档协作到与业务过程集成的自定义解决方案的各种项目活动。 Office Groove 2007 的以下十大方式可帮助您和您的团队更高效地协作并提高交付产品的质量。
为什么用Groove
1.资源共享,使用它可以很轻松地实现资源共享! 2.消息提醒,新增的文件、未阅读过的资料马上就可以知道! 3.脱机浏览,当您不能上网时,Groove中的资料照样能看! 4.文件同步,可以把多台PC上的文件进行自动同步!
BizTalk Workspace内容介绍
1.共享
在这里,共享了我们多年来收集的各种文档、代码以及自己的一些小项目,只有靠大家的努力,才能不断的丰富!
2.灌水区
在这里,可以进行一些非技术性问题的讨论
3.问题区
有关BizTalk方面的问题,都发表在这里,最后都进行一下分类,为以后进行查询提供便利条件。
4.文章区
网络的资源是丰富的,只有不断的收集、整理,才能在以后的工作中用到。
第一次使用时
先创建一个用户,基本步骤如下: 完成这些步骤后,您就拥有了一个Groove帐号,同一个email可以注册很多个(但不推荐这么用)。 后面,您就可以创建自己的Workspace或Share directory了。
有关Groove的一料资料
Microsoft Office Groove 2007 十大优点 Office 2007 家族的新成员 Groove 2007Microsoft Office 2007 简体中文企业版+专业版--正式版
邀请您加入
如果您想加入我们的BizTalk Workspace,请将您注册用email留下,或者直接发邮件给我(xu.zhong#hotmail.com)也行。 之后,您将收到一封加入到BizTalk workspace 的申请信,附件中有一个 grv文件,双击打开后选择"接受"即可。 欢迎广大BizTalk Funs加入。
BizTalk Mapping中Xslt的应用
什么是XSLT
在计算机科学中, XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换”(transformation)。它是XSL(Extensible
stylesheet language)规范的一部分。XSL规范的另外一部分是XSLF(F代表代表格式化对象Formatting Objects),又称XSL-FO或XSLFO。
为什么要用XSLT
我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:
(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。
(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。
在BizTalk中有Mapping,其实,它也是一种被编译了的Xslt,在Mapping中还可以使用更高级的一些功能。但有是,可能您的业务数据已经定义好了,并在先前已经定义好了xslt文件,来对数据进行转换,这时,就没有必须再去一点一点的去画线了,直接引用定义好的xslt就可以了。
并且,对于Xslt很熟悉的开发人员来说,比使用Mapping更方便,更个性(自定义)化。
XSLT开发工具 MapForce
开发Xslt的工具很简单,记事本、XmlSpy、VS、etc。但我向大家强烈推荐使用Altova出品的MapForce,功能根相当强大。
主要功能,界面化的定义Xslt。另外,它可以完成下面几种应用场景:
1.XML - XML
2.XML - TEXT
3.DB - XML
4.DB - TEXT
5.TEXT - TEXT
它还集成了EDI、X12的数据定义。
EDI的定义
XML->TEXT的定义
Mapping中使用XSLT
下面举一个非常简单的例子
1. 定义输入消息
2. 定义输出消息
3. 使用MapForce完成一个Mapping功能
4. 得到Xslt数据
5. 保存成Xslt文件,在BizTalk Mapping中会用到。
6. 定义Mapping,在Custom Xsl Path中输入前面定义的xslt文件。
7. 保存,测试,可以得到2中的输出消息。
提示: 如果在Mapping中使用了xslt,那么,之前在Map中定义所有映射关系将不起作用了。
2007年6月16日
2007年6月5日
这几天正好跟系统管理员整理了一下现有系统的EAI情况,自己用Visio画了一个示意图。 请大家鉴赏一下,多提意见!!!
2007年5月24日
开发程序,避免不了经常要访问数据库,这里,想最常用的当然是"select * from SomeTable where ID=***"了。 这么常用,BizTalk当然也要提供一个可配置的开发手段给我们了!!它就是Database Lookup Functoid。 这个用例主要是输入用户名,查询数据库,得到该用户的其他数据。  Fegend-1 输入数据  Fegend-2 数据库表  Fegend-3 输出数据 这里略掉了输入、输出Schema的定义过程,直接来到Map的定义。 向Map中添加Database Lookup Functoid,Value Extractor Functoid,Error Review Functoid三个必用的Functoid。  Fegend-4 创建的Map Database Lookup Functoid有四个输入参数 1.Value 2.Connection String 3.TableName 4.ColumnName 它这里类似完成了如下的代码 Connection conn = new Connection( ConnectionString); Command cmd = new Command("select top 1 * from TableName where ColumnName= Value",conn)  Fegend-5 Database Lookup中的配置 Database Lookup Functoid执行完查询数据库后,会得到一个ADO的Record。 这里必须用Value Extractor Functoid来读取Record的数据。 当然于下面的代码 string value = Reader["Name"].ToString();  Fegend-6 Value Extractor的配置 其中用到了Error Review,它主要是用来捕获Database Lookup Functoid运行时产生的错误。  Fegend-7 捕获异常 你会发现,为啥要在Database Lookup Functoid中设置ConnectionString,这样以后改起来不是很麻烦。当然有方法,可以使用UDL文件! 创建一个UDL文件,并双击它进行配置。  Fegend-8 UDL文件  Fegend-9 配置数据源 这样就可以直接用 File Name=c:\..........\*.UDL 文件来设置ConnectionString了。不过,它的使用会带来一些性能上的问题,因为每次连接数据库,都要去读文件。  |