Task Form para Workflow de aprobacion

01/09/2008 - 22:05 por Jorge | Informe spam
Hola buenas tardes a todos.

Despues de mucho tiempo (perdido), he intentado asignarle a la creacion de
una tarea en un flujo de trabajo de aprobacion un formulario aspx. Dicho en
otras palabras cuando se ejecuta una tarea de un flujo de aprobacion deberia
ir a la pagina aspx para aprobar o rechazar un documento. Lo he intentado
todo, lo tengo que hacer con aspx y no con infopath como todo el mundo me
recomienda por la sencilla razon que mi cliente no tiene MOSS.

voy a explicar paso a paso lo que estoy haciendo:
1. tengo un flujo de trabajo secuencial para sharepoint, construido en VS
2008 debe ejecutar dos tareas una primer de revision y la segunda de
aprobacion.
2. Despues de ejecutar la primera tarea deberia ir a el formulario de
aprobacion (aspx) para aceptar o rechazar el docuemto.
3. Dependiendo del resultado de esta primera aprobacion deberia dirigirse a
una segunda aprobacion que tambien es un formulario en aspx y finalizar el
flujo.

Para dar solucion a esto como ya les dije tengo el flujo diseñado en VS
2008, las tareas se crean con la actividad "CreateTaskWithContentType", en
las propiedades del conten type mas especificamente en el "ContentTypyID" ya
lo tengo enlazado al ID del contentType que cree, las demas tareas son las
normales para la ejecucion del flujo. Tambien tengo la pagina .aspx y el
respectivo codebehind de esta.

Lo siguiente seria hacer deploy y funciona pero no es asi, no funciona y no
se que hacer no se por donde mas atacar el problema, el flujo se dispara
normalmente y me ejecuta la primera tarea sin errores (esto lo se por el
debug que he hecho), pero cuando veo en el sitio aparece error y pue sel
flujo no continua y no me deja ver nunca el formulario .aspx de aprobacion.
Les ruego su ayuda en este tema, he seguidio al pie de la letra articulos
como estos:

http://www.sheltonblog.com/video/Bu...rkflow.wmv
http://www.sheltonblog.com/video/Bu...rkflow.wmv
http://msdn.microsoft.com/en-us/lib...18732.aspx
http://www.eggheadcafe.com/software...m-doe.aspx
http://siderys.blogspot.com/2008/04...io_27.html

Pero nada de esto me ha funcionado.
adjunto lo que he hecho:

"Archivo workflow.xml"
<?xml version="1.0" encoding="utf-8" ?>

<!-- Customize the text in square brackets.
Remove brackets when filling in, e.g.
Name="[NAME]" ==> Name="MyWorkflow" -->

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Workflow
Name="ApprovalWorkflow"
Description="My SharePoint Workflow"
Id="6f3f9bf3-c75b-4a35-8476-0e01f2e75518"
CodeBesideClass="ApprovalWorkflow.Workflow1"
CodeBesideAssembly="ApprovalWorkflow, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=aaa7c99b490b5479"
StatusUrl="_layouts/WrkStat.aspx"
TaskListContentTypeId="0x01080100C5B9C785D13F43f38645772B1C5A152A">

<Categories/>
<MetaData>
<!-- Tags to specify InfoPath forms for the workflow; delete tags for
forms that you do not have -->
<!--<Association_FormURN>[URN FOR ASSOCIATION
FORM]</Association_FormURN>
<Instantiation_FormURN>[URN FOR INSTANTIATION
FORM]</Instantiation_FormURN>
<Task0_FormURN>[URN FOR TASK (type 0) FORM]</Task0_FormURN>
<Task1_FormURN>[URN FOR TASK (type 1) FORM]</Task1_FormURN>-->
<!-- Modification forms: create a unique guid for each modification
form -->
<!--<Modification_[UNIQUE GUID]_FormURN>[URN FOR MODIFICATION
FORM]</Modification_[UNIQUE GUID]_FormURN>
<Modification_[UNIQUE GUID]_Name>[NAME OF MODIFICATION TO BE DISPLAYED
AS A LINK ON WORKFLOW STATUS PAGE</Modification_[UNIQUE GUID]_Name>
<StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl>
</MetaData>
</Workflow>
</Elements>

"Archivo Feature.xml"
<?xml version="1.0" encoding="utf-8" ?>

<Feature Id="8a943232-5fc3-4646-9f65-969976682007"
Title="ApprovalWorkflow feature"
Description="My SharePoint Workflow Feature"
Version="12.0.0.0"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="TaskFormApprovalContentType.xml"/>
<ElementManifest Location="workflow.xml" />
</ElementManifests>
<Properties>
<Property Key="GloballyAvailable" Value="true" />

<!-- Value for RegisterForms key indicates the path to the forms
relative to feature file location -->
<!-- if you don't have forms, use *.xsn -->
<Property Key="RegisterForms" Value="*.xsn" />
</Properties>
</Feature>


"Archivo del contentType TaskFormApprovalContentType"

<?xml version="1.0" encoding="utf-8" ?>

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ContentType ID="0x01080100C5B9C785D13F43f38645772B1C5A152A"
Name="WorkFlow Task Form .aspx"
Group="ApprovalWorkflow"
Description="Approval Task Form in Aspx File"
Version="0"
Hidden="FALSE">
<XmlDocuments>
<XmlDocument NamespaceURI="
http://schemas.microsoft.com/sharep...">
<FormUrls
xmlns="http://schemas.microsoft.com/sharep...">

<New>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</New>

<Display>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</Display>

<Edit>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</Edit>
</FormUrls>
</XmlDocument>
</XmlDocuments>
</ContentType>
</Elements>


"Archivo .aspx"
<%@ Assembly Name="Microsoft.SharePoint, Version.0.0.0, Culture=neutral,
PublicKeyTokenqe9bce111e9429c" %>
<%@ Assembly Name="ApprovalWorkflow, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=aaa7c99b490b5479" %>
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="ApprovalForm.aspx.cs" Inherits="ApprovalWorkflow.ApprovalForm" %>

<%--Reference the SharePoint DLL for a tag that we will need later on in the
script--%>
<%@ Register TagPrefix="SharePoint"
Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version.0.0.0, Culture=neutral,
PublicKeyTokenqe9bce111e9429c" %>
<%@ Register TagPrefix="Utilities"
Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint,
Version.0.0.0, Culture=neutral, PublicKeyTokenqe9bce111e9429c" %>
<%--This is one of the Content Place Holders named in the
Default.Master and Applicaiton.Master files.
It is also where most, if not all of your control code should go.--%>
<asp:content contentplaceholderid="PlaceHolderMain" runat="server">
<%-- Start of your control code --%>
<Div>
<h1>Approval Form</h1>
<b>Expense Report Link:</b>
<asp:HyperLink ID="DocumentLink"
runat="server">HyperLink</asp:HyperLink>
<br />
<br />
<b>Expense Report Amount:</b>
<asp:Label ID="lblExpenseReportAmount" runat="server"
Text="Expense Report Amount"></asp:Label>
<br />
<br />
<asp:Button ID="btnApprove" runat="server" Text="Approve"
onclick="btnApprove_Click" />

<asp:Button ID="btnReject" runat="server" Text="Reject"
onclick="btnReject_Click" />

<asp:Button ID="btnCancel" runat="server" Text="Cancel"
onclick="btnCancel_Click" />
<br />
<br />
<b>Approval Notes Field:
<br />
<br />
<asp:TextBox ID="txtApprovalNotes" runat="server" Rows="10"
TextMode="MultiLine" Width="687px"></asp:TextBox>
<br />
<br />
<hr />
<h2>Version History List</h2>
<asp:GridView runat="server" ID="versionGrid"
AutoGenerateColumns="False"
Font-Bold="False" Font-Size="Small" Width="686px">
<Columns>
<asp:BoundField HeaderText="Version Number"
DataField="Version Number" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField HeaderText="Level" DataField="Level" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:BoundField>
<asp:HyperLinkField HeaderText="Link"
DataNavigateUrlFields="Link"
Text="Click here to open" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:HyperLinkField>
</Columns>
<HeaderStyle Font-Size="Large" />
</asp:GridView>
</Div>
<%-- End of your control code --%>
<%-- Control Tag that will let SharePoint know that we are going to be
Posting Data to the form --%>
<SharePoint:FormDigest ID="FormDigest1" runat="server" />
</asp:content>



espero compañeros me puedan colaborar con este problemita, se los agradezco
muchisimo.

pdt.
Lo intente hacer con el ecm y con el wssWorkflow y tambien fue en vano en
uno debo instalar unas dlll para que funcione y no puedo hacer eso en la
maquina de produccion y el otro no funciona.


reitero mis agradecimientos.


Jorge.
 

Leer las respuestas

#1 Nicolas Briones
10/09/2008 - 20:55 | Informe spam
Hola Jorge... yo he empezado a resolver el mismo problema, y estoy sacando la
información desde acá:

http://rshelton.com/archive/2007/10...kflow.aspx

Avisa si tuviste resultados, y yo haré lo mismo en cuanto lo logre.

Saludos,

Nicolás

"Jorge" wrote:

Hola buenas tardes a todos.

Despues de mucho tiempo (perdido), he intentado asignarle a la creacion de
una tarea en un flujo de trabajo de aprobacion un formulario aspx. Dicho en
otras palabras cuando se ejecuta una tarea de un flujo de aprobacion deberia
ir a la pagina aspx para aprobar o rechazar un documento. Lo he intentado
todo, lo tengo que hacer con aspx y no con infopath como todo el mundo me
recomienda por la sencilla razon que mi cliente no tiene MOSS.

voy a explicar paso a paso lo que estoy haciendo:
1. tengo un flujo de trabajo secuencial para sharepoint, construido en VS
2008 debe ejecutar dos tareas una primer de revision y la segunda de
aprobacion.
2. Despues de ejecutar la primera tarea deberia ir a el formulario de
aprobacion (aspx) para aceptar o rechazar el docuemto.
3. Dependiendo del resultado de esta primera aprobacion deberia dirigirse a
una segunda aprobacion que tambien es un formulario en aspx y finalizar el
flujo.

Para dar solucion a esto como ya les dije tengo el flujo diseñado en VS
2008, las tareas se crean con la actividad "CreateTaskWithContentType", en
las propiedades del conten type mas especificamente en el "ContentTypyID" ya
lo tengo enlazado al ID del contentType que cree, las demas tareas son las
normales para la ejecucion del flujo. Tambien tengo la pagina .aspx y el
respectivo codebehind de esta.

Lo siguiente seria hacer deploy y funciona pero no es asi, no funciona y no
se que hacer no se por donde mas atacar el problema, el flujo se dispara
normalmente y me ejecuta la primera tarea sin errores (esto lo se por el
debug que he hecho), pero cuando veo en el sitio aparece error y pue sel
flujo no continua y no me deja ver nunca el formulario .aspx de aprobacion.
Les ruego su ayuda en este tema, he seguidio al pie de la letra articulos
como estos:

http://www.sheltonblog.com/video/Bu...rkflow.wmv
http://www.sheltonblog.com/video/Bu...rkflow.wmv
http://msdn.microsoft.com/en-us/lib...18732.aspx
http://www.eggheadcafe.com/software...m-doe.aspx
http://siderys.blogspot.com/2008/04...io_27.html

Pero nada de esto me ha funcionado.
adjunto lo que he hecho:

"Archivo workflow.xml"
<?xml version="1.0" encoding="utf-8" ?>

<!-- Customize the text in square brackets.
Remove brackets when filling in, e.g.
Name="[NAME]" ==> Name="MyWorkflow" -->

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Workflow
Name="ApprovalWorkflow"
Description="My SharePoint Workflow"
Id="6f3f9bf3-c75b-4a35-8476-0e01f2e75518"
CodeBesideClass="ApprovalWorkflow.Workflow1"
CodeBesideAssembly="ApprovalWorkflow, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=aaa7c99b490b5479"
StatusUrl="_layouts/WrkStat.aspx"
TaskListContentTypeId="0x01080100C5B9C785D13F43f38645772B1C5A152A">

<Categories/>
<MetaData>
<!-- Tags to specify InfoPath forms for the workflow; delete tags for
forms that you do not have -->
<!--<Association_FormURN>[URN FOR ASSOCIATION
FORM]</Association_FormURN>
<Instantiation_FormURN>[URN FOR INSTANTIATION
FORM]</Instantiation_FormURN>
<Task0_FormURN>[URN FOR TASK (type 0) FORM]</Task0_FormURN>
<Task1_FormURN>[URN FOR TASK (type 1) FORM]</Task1_FormURN>-->
<!-- Modification forms: create a unique guid for each modification
form -->
<!--<Modification_[UNIQUE GUID]_FormURN>[URN FOR MODIFICATION
FORM]</Modification_[UNIQUE GUID]_FormURN>
<Modification_[UNIQUE GUID]_Name>[NAME OF MODIFICATION TO BE DISPLAYED
AS A LINK ON WORKFLOW STATUS PAGE</Modification_[UNIQUE GUID]_Name>
<StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl>
</MetaData>
</Workflow>
</Elements>

"Archivo Feature.xml"
<?xml version="1.0" encoding="utf-8" ?>

<Feature Id="8a943232-5fc3-4646-9f65-969976682007"
Title="ApprovalWorkflow feature"
Description="My SharePoint Workflow Feature"
Version="12.0.0.0"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="TaskFormApprovalContentType.xml"/>
<ElementManifest Location="workflow.xml" />
</ElementManifests>
<Properties>
<Property Key="GloballyAvailable" Value="true" />

<!-- Value for RegisterForms key indicates the path to the forms
relative to feature file location -->
<!-- if you don't have forms, use *.xsn -->
<Property Key="RegisterForms" Value="*.xsn" />
</Properties>
</Feature>


"Archivo del contentType TaskFormApprovalContentType"

<?xml version="1.0" encoding="utf-8" ?>

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ContentType ID="0x01080100C5B9C785D13F43f38645772B1C5A152A"
Name="WorkFlow Task Form .aspx"
Group="ApprovalWorkflow"
Description="Approval Task Form in Aspx File"
Version="0"
Hidden="FALSE">
<XmlDocuments>
<XmlDocument NamespaceURI="
http://schemas.microsoft.com/sharep...">
<FormUrls
xmlns="http://schemas.microsoft.com/sharep...">

<New>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</New>

<Display>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</Display>

<Edit>_layouts\ApprovalWorkflowForms\ApprovalForm\ApprovalForm.aspx</Edit>
</FormUrls>
</XmlDocument>
</XmlDocuments>
</ContentType>
</Elements>


"Archivo .aspx"
<%@ Assembly Name="Microsoft.SharePoint, Version.0.0.0, Culture=neutral,
PublicKeyTokenqe9bce111e9429c" %>
<%@ Assembly Name="ApprovalWorkflow, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=aaa7c99b490b5479" %>
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="ApprovalForm.aspx.cs" Inherits="ApprovalWorkflow.ApprovalForm" %>

<%--Reference the SharePoint DLL for a tag that we will need later on in the
script--%>
<%@ Register TagPrefix="SharePoint"
Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version.0.0.0, Culture=neutral,
PublicKeyTokenqe9bce111e9429c" %>
<%@ Register TagPrefix="Utilities"
Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint,
Version.0.0.0, Culture=neutral, PublicKeyTokenqe9bce111e9429c" %>
<%--This is one of the Content Place Holders named in the
Default.Master and Applicaiton.Master files.
It is also where most, if not all of your control code should go.--%>
<asp:content contentplaceholderid="PlaceHolderMain" runat="server">
<%-- Start of your control code --%>
<Div>
<h1>Approval Form</h1>
<b>Expense Report Link:</b>
<asp:HyperLink ID="DocumentLink"
runat="server">HyperLink</asp:HyperLink>
<br />
<br />
<b>Expense Report Amount:</b>
<asp:Label ID="lblExpenseReportAmount" runat="server"
Text="Expense Report Amount"></asp:Label>
<br />
<br />
<asp:Button ID="btnApprove" runat="server" Text="Approve"
onclick="btnApprove_Click" />

<asp:Button ID="btnReject" runat="server" Text="Reject"
onclick="btnReject_Click" />

<asp:Button ID="btnCancel" runat="server" Text="Cancel"
onclick="btnCancel_Click" />
<br />
<br />
<b>Approval Notes Field:
<br />
<br />
<asp:TextBox ID="txtApprovalNotes" runat="server" Rows="10"
TextMode="MultiLine" Width="687px"></asp:TextBox>
<br />
<br />
<hr />
<h2>Version History List</h2>
<asp:GridView runat="server" ID="versionGrid"
AutoGenerateColumns="False"
Font-Bold="False" Font-Size="Small" Width="686px">
<Columns>
<asp:BoundField HeaderText="Version Number"
DataField="Version Number" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField HeaderText="Level" DataField="Level" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:BoundField>
<asp:HyperLinkField HeaderText="Link"
DataNavigateUrlFields="Link"
Text="Click here to open" >
<HeaderStyle Font-Bold="True" Font-Underline="True"
HorizontalAlign="Center" />
</asp:HyperLinkField>
</Columns>
<HeaderStyle Font-Size="Large" />
</asp:GridView>
</Div>
<%-- End of your control code --%>
<%-- Control Tag that will let SharePoint know that we are going to be
Posting Data to the form --%>
<SharePoint:FormDigest ID="FormDigest1" runat="server" />
</asp:content>



espero compañeros me puedan colaborar con este problemita, se los agradezco
muchisimo.

pdt.
Lo intente hacer con el ecm y con el wssWorkflow y tambien fue en vano en
uno debo instalar unas dlll para que funcione y no puedo hacer eso en la
maquina de produccion y el otro no funciona.


reitero mis agradecimientos.


Jorge.

Preguntas similares