2013-02-20 62 views
2
  • 我正在查找有关如何使用TFS Java SDK在 TFS服务器中订阅CheckinEvents的信息。

我碰到过this link,它显示了如何使用TFS .Net SDK来做到这一点。订阅使用TFS的TFS服务器的CheckinEvent Java SDK

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(txtTfsURL.Text), new UICredentialsProvider()); 
tpc.EnsureAuthenticated(); 
IEventService eventService = tpc.GetService(typeof(IEventService)) as IEventService; 
DeliveryPreference delPref = new DeliveryPreference(); 
delPref.Address = “http://” + System.Environment.MachineName + “:8001/CheckInNotify”; 
delPref.Schedule = DeliverySchedule.Immediate; 
delPref.Type = DeliveryType.Soap; 
subscriptionId = eventService.SubscribeEvent(System.Environment.UserDomainName + “\\” + System.Environment.UserName, “CheckInEvent”, “”, delPref); 
lblSubscription.Content = string.Format("A checkin subscription is created with subscription id : {0}",subscriptionId.ToString()); 

什么是相应的Java API?它们和下面的一样吗?

TFSTeamProjectCollection.getVersionControlClient().getEventEngine().addCheckinListener(CheckinListener listener); 

此外,我怀疑只有当我们使用同一个客户端签入时,这个监听器才会被通知。那是对的吗?

  • 另外我们如何确定TFS集合&项目来自通知SOAP响应?

有一个GUID是GUID的集合,但它是其他数据的一部分,所以不知道它的所有时间和项目名都可用。有任何想法吗?

  • 您如何确保您不会订阅两次相同的收藏?我们可以订阅一个项目吗?

回答

0
  1. 没有,你所提供的两个例子是不等价的。第一个示例设置了一个SOAP通知,并且无论何时用户签入,Team Foundation Server都会向配置的端点发送SOAP消息。第二个示例将配置客户端的事件“引擎”,以在您的客户端成功签入时调用签入侦听器

  2. 正如你所注意到的,Java API将配置Java API来触发一个事件,只要你签入它。您无法使用Java API配置SOAP事件 - 或服务器本身发生的全局事件。

  3. 我建议您使用唯一的URI来标识项目集合。查询参数在这里是适当的。要识别项目,您只需查看服务器路径。

  4. 我并不熟悉项目集合GUID何时交付,但我会通过上述#3消除歧义。

+0

嗨,爱德华,感谢您的回应:)无论如何,我可以用TFS使用java SDK设置SOAP通知? 你正在谈论的URI。是这样的: 或者是否有任何回应? – Srinivas 2013-02-22 07:39:58