AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2008, 10:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
Solutions Monkey: Using Microsoft Dynamics Ax 2009 Workflow controls in EP
Источник: http://blogs.msdn.com/solutions/arch...ols-in-ep.aspx
==============
Here is the document from the Dynamics AX workflow team on how to enable workflow controls in EP. You can also take a look at PurchReqTableInfo or TrvExpTrans controls in out of the box EP which are workflow enabled. Thanks Josh Honeyman for sending this info to me. 1.1. WorkflowActionBar control

The WorkflowActionBar control surfaces a message bar and an actions menu button to the user. This provides context of the workflow action that needs to be taken along with surfacing the button to take the action.





Since this control requires the data to be loaded in order to render, it is sub-classed from the ASP.NET DataBoundControl. The rendering of data bound controls occurs after the associated data source control has executed its data set. This allows us to look up workflow specific information for the current workflow-enabled record and then dynamically add the necessary controls to the WorkflowActionBar. The PerformDataBinding method is overridden and provides this logic to build up our controls when the data is ready.





A set of events are exposed as the primary interaction with the control.



Adding control in markup

Just like any other web control, this WorkflowActionBar control can be added via markup or the designer. Since this is a DataBoundControl, the DataSourceID and DataMember properties MUST be set. The DataMember property must be set to the table that is workflow enabled.











</SPAN>






</SPAN>



EvaluatingCanSubmitToWorkflow event

This event will fire when the control is attempting to determine if the current record is in a state to be submitted to workflow. The control does not have any knowledge of the state of the document, thus the application developer MUST subscribe to this event.



<SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt">

void Page_Init(object sender, EventArgs e)

{

//Subscribe to the EvaluatingCanSubmitToWorkflow event

this.WorkflowActionBar.EvaluatingCanSubmitToWorkflow += new EventHandler(WorkflowActionBar_EvaluatingCanSubmitToWorkflow);

}





void WorkflowActionBar_EvaluatingCanSubmitToWorkflow(object sender, EvaluatingCanSubmitToWorkflowEventArgs e)

{

// Evaluate state of document and set value to true or false

e.CanSubmitToWorkflow = true;

}










WorkflowConfigurationLoading event

This event will fire when the control is attempting to infer and load a configuration for the current submit-able record. If a valid configuration record is set onto the event args, the control will use that instead of doing the inference based on activation conditions, record type, etc.



<SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt">

void Page_Init(object sender, EventArgs e)

{

//Subscribe to the WorkflowConfigurationLoading event

this.WorkflowActionBar.WorkflowConfigurationLoading += new EventHandler(WorkflowActionBar_WorkflowConfigurationLoading);

}





void WorkflowActionBar_WorkflowConfigurationLoading(object sender, WorkflowConfigurationLoadingEventArgs e)

{

ISession session = this.AxSession;



//Use a proxy class to retrieve your desired workflow configuration e.WorkflowConfiguration = YourProxy.loadWorkflowConfiguration(session.AxaptaAdapter);

}










WorkflowConfigurationActive event

This event will fire after the control has retrieved a configuration for the submit-able record. If the consumer of the control provided the configuration via subscribing to the WorkflowConfigurationLoading event, this is not an interesting event. However, if the control inferred the configuration by mapping the record type to an enabled configuration and/or evaluated activation conditions, this event may be interesting to the consumer. The event args will provide the active configuration record to the subscriber.



<SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt">

void Page_Init(object sender, EventArgs e)

{

//Subscribe to the WorkflowConfigurationActive event

this.WorkflowActionBar.WorkflowConfigurationActive += new EventHandler(WorkflowActionBar_WorkflowConfigurationActive);

}



void WorkflowActionBar_WorkflowConfigurationActive(object sender, WorkflowConfigurationActiveEventArgs e)

{

// Do something interesting with the configuration

IAxaptaRecordAdapter workflowConfiguration = e.WorkflowConfiguration;

}










WorkflowWorkItemActive event

This event will fire after the control has retrieved a pending work item for the current user and current record. Also, when we add support for multiple work items being displayed in this control (i.e. multiple workflows acting on the same record), this event will get fired when the context is switched between the work items on the current record. The consumer can retrieve the active work item via subscribing to this event.





<SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt">

void Page_Init(object sender, EventArgs e)

{

//Subscribe to the WorkflowWorkItemActive event

this.WorkflowActionBar.WorkflowWorkItemActive += new EventHandler(WorkflowActionBar_WorkflowWorkItemActive);

}



void WorkflowActionBar_WorkflowWorkItemActive(object sender, WorkflowWorkItemActiveEventArgs e)

{

// Do something interesting with the workflow work item.

IAxaptaRecordAdapter workflowWorkItem = e.WorkflowWorkItem;

}










1.2. EPWorkflowWorkItemActionManager

This X++ class contains a generic menu item class implementation to associate to work item specific web menu items (Outcomes, Delegate, and Resubmit). Instead of every application developer building their own menu item classes to manage calling the necessary work item APIs, this class provides a default implementation that can be used.



main



public static void main(Args _args)



This is the method invoked when a web menu item is selected in the workflow action bar or from the unified work list. This contains the generic implementation of handling a work item action selected.



1.3. EPWorkflowControlContext

This X++ class will expose the current context of the workflow controls, as in the controls are referencing a workflow comment, a user (for delegate and request change), an active workflow configuration or an active work item. This context information must flow to the menu item classes when a workflow menu item is selected from EP. From the Args passed into the menu item class, you will be able to retrieve the EPWorkflowControlContext from Args.caller and then invoke the following APIs to retrieve the desired workflow information.



getActiveWorkflowConfiguration



public WorkflowConfigurationTable getActiveWorkflowConfiguration()



This method will retrieve the current active workflow configuration for the current record. This provides an X++ programming model for getting at the information retrieved by the workflow controls.



getActiveWorkflowWorkItem



public WorkflowWorkItemTable getActiveWorkflowWorkItem()



This method will retrieve the current active workflow work item for the current record. This provides an X++ programming model for getting at the information retrieved by the workflow controls.



getWorkflowComment



public WorkflowComment getWorkflowComment()



This method will retrieve the comment entered for the current workflow action. This provides an X++ programming model for getting at the information retrieved by the workflow controls.



getWorkflowReassignedUser



public userId getWorkflowReassignedUser()



This method will retrieve the user selected within the workflow comments dialog (if the action was delegate or request change). This value will be empty for all other workflow actions. This provides an X++ programming model for getting at the information retrieved by the workflow controls.



Sample menu item class implementation (processing approve action for a work item)

public static void main(Args _args)

{

WorkflowComment comment;

WorkflowWorkItemTable workItem;

EPWorkflowControlContext context =_args.caller();

;



// retrieve active work item from workflow control context

workItem = context.getActiveWorkflowWorkItem();



if (workItem != null)

{

comment = context.getWorkflowComment();



// take the action on the work item

WorkflowWorkItem::takeAction(workItem.Id, 'Approve', comment);

}

}












==============
Источник: http://blogs.msdn.com/solutions/arch...ols-in-ep.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Solutions Monkey: Microsoft Dynamics AX 2009 Enterprise Portal / Role Centers - Deployment Tips-n-Tricks – 3 Blog bot DAX Blogs 0 27.10.2008 08:05
Solutions Monkey: Microsofty Dynamics AX 2009 Enterprise Portal / Role Centers - Deployment Tips-n-Tricks - 2 Blog bot DAX Blogs 0 30.09.2008 07:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Solutions Monkey: Microsoft Dynamics AX 2009 Enterprise Portal Quick starts and Screen casts Blog bot DAX Blogs 0 05.08.2008 05:18
Solutions Monkey: Enterprise Portal in Microsoft Dynamics Ax 2009 Blog bot DAX Blogs 0 26.06.2008 09:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:46.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.