24.12.2009, 11:27
|
#4
|
Чайный пьяница
Регистрация: 02.07.2008
Адрес: Greenville, SC
|
Цитата:
Сообщение от Tarasov E
Все сделал как в в вашем примере, создалось письмо, но URL в письме не было.
Код: [CrmWorkflowActivity("Сканировать", "Сканирование WEB-ресурсов")]
public class Activity1 : SequenceActivity
{
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
IWorkflowContext workflowContext = contextService.Context;
ICrmService service = workflowContext.CreateCrmService();
Guid _entityid = workflowContext.PrimaryEntityId;
string _entitytype = workflowContext.PrimaryEntityName;
TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
targetRetrieve.EntityName = _entitytype;
targetRetrieve.EntityId = _entityid;
RetrieveRequest retrieve = new RetrieveRequest();
retrieve.Target = targetRetrieve;//из какой записи берем
retrieve.ColumnSet = new AllColumns();//что берем
retrieve.ReturnDynamicEntities = true;//о_О
RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
DynamicEntity retrievedEntity = (DynamicEntity)retrieved.BusinessEntity;
string url = retrievedEntity.Properties.Contains("new_url") ? (string)retrievedEntity["new_url"] : string.Empty.Normalize();
string startParse = retrievedEntity.Properties.Contains("new_startparse") ? (string)retrievedEntity["new_startparse"] : string.Empty.Normalize();
string endParse = retrievedEntity.Properties.Contains("new_endparse") ? (string)retrievedEntity["new_endparse"] : string.Empty.Normalize();
string folder = retrievedEntity.Properties.Contains("new_history") ? (string)retrievedEntity["new_history"] : string.Empty;
string filtr = retrievedEntity.Properties.Contains("new_filtr") ? (string)retrievedEntity["new_filtr"] : string.Empty;
string Code = CreateCode(startParse.Normalize(), endParse.Normalize(), ConnectToSite(url));
String[] filt_strs = filtr.Split(' ');
bool flag = false;
foreach(var str in filt_strs)
{
flag = Code.Contains(str);
if (flag) break;
}
if (flag)
{
//I need organization name for Url Creation
organization org = (organization)service.Retrieve(EntityName.organization.ToString(), workflowContext.OrganizationId, new ColumnSet(new string[] { "name" }));
string orgname = org.name;
url = string.Format("{0}{1}/CRMReports/viewer/drillopen.aspx?ID={2}&LogicalName={3}",
new object[] {
//I retrieve url of crm server with MSCRMServices part and clear it
((string)(Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSCRM").GetValue("ServerUrl"))).Replace("MSCRMServices", ""),
orgname,
_entityid,
_entitytype});
return ActivityExecutionStatus.Closed;
}
Save(Code, folder);
//Здесь выполняется пользовательская логика
return base.Execute(executionContext);
}
//Задание свойства вывода
public static DependencyProperty urlProperty = DependencyProperty.Register("url", typeof(string), typeof(Activity1));
[CrmOutput("url")]
public string url
{
get
{
return (string)base.GetValue(urlProperty);
}
set
{
base.SetValue(urlProperty, value);
}
} А так же прикрепляю скрин шаблона сообщения. В чем может крыться ошибка? С шаблоном вроде все нормально, значит не получаем URL,но тогда почему?
А сам скриншот бизнес процесса, где данная активность используется можете предоставить?
|
|