Показать сообщение отдельно
Старый 24.12.2009, 11:27   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 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,но тогда почему?
А сам скриншот бизнес процесса, где данная активность используется можете предоставить?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit