Como faço para acessar os dados passados ??para trás de uma forma associação fluxo de trabalho?

StackOverflow https://stackoverflow.com/questions/352268

  •  20-08-2019
  •  | 
  •  

Pergunta

Como faço para acessar passou os dados de volta de uma forma associação fluxo de trabalho?

Cenário: Quando um administrador associa um fluxo de trabalho com uma lista sharepoint eu quero mostrar um formulário do InfoPath que permite que as variáveis ??para ser definido que se aplicam a todas as instâncias nessa lista. O formulário de associação surge como seria de esperar e envia os dados indicados de volta para o ambiente de hospedagem. Eu li que eu possa chegar aos dados, uma vez dentro de um fluxo de trabalho exemplo, através SPWorkflowActivationProperties.ActivationData mas esta é uma seqüência de caracteres XML. Não é possível acessar os dados retornados por meio de propriedades estendidas muito parecido com o que você faz com formulários InfoPath normais?

Foi útil?

Solução

Tanto quanto eu sei que isso não parece possível usando InfoPath OOTB. Entretanto, a maioria da minha experiência com formulários de início personalizado usado ASP.NET Web Forms onde serializado uma classe e enfiou-activationData.

abordagens possíveis podem ser:

  1. Encapsulate XML parsing

  2. Use Xsd.exe para criar uma classe baseado fora do esquema do seu formulário do InfoPath.

1. Encapsulate XML parsing

Você pode criar uma classe que encapsula os dados de formulário e leva a string XML como um parâmetro do que do construtor.

forma Infopath:

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="12.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Administrator\My%20Documents\Template1.xsn" name="urn:schemas-microsoft-com:office:infopath:Template1:-myXSD-2005-10-21T21-12-27" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?><my:assetTracking xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-10-21T21:12:27" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-gb">
<my:employee>
    <my:employeeName></my:employeeName>
    <my:employeeDepartment></my:employeeDepartment>
</my:employee>
<my:assets>
    <my:asset>
        <my:assetID></my:assetID>
        <my:assetDescription></my:assetDescription>
        <my:assetMake></my:assetMake>
        <my:assetModel></my:assetModel>
        <my:assetSerialNumber></my:assetSerialNumber>
        <my:assetAssignedTo></my:assetAssignedTo>
        <my:assetDepartment></my:assetDepartment>
        <my:assetLocation></my:assetLocation>
        <my:assetCategory></my:assetCategory>
        <my:assetNotes></my:assetNotes>
    </my:asset>
</my:assets>

classe de dados de formulário personalizado

public class FormData
{

  public string EmployeeName { get; set; }
  public string EmployeeDepartment { get; set; }

  public FormData(string formData)
  {
       XmlDocument document = new XmlDocument();
       document.LoadXml(formData);
       XmlNamespaceManager namespaceManager = new XmlNamespaceManager(document.NameTable);
       namespaceManager.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2007-05-08T04:21:20");

       // Initialize member fields
       this.EmployeeName = document.SelectSingleNode("/my:employee/my:employeeName", nsmgr).InnerText;
       this.EmployeeDepartment = doc.SelectSingleNode("/my:employee/my:employeeDepartment", nsmgr).InnerText;

       etc....
  }
 }

2. Use xsd.exe xsd pode ser usado para gerar uma classe que se baseia o esquema usado por seu formulário de fluxo de trabalho. Veja: Como: Associação Acesso e Iniciação dados de formulário em um fluxo de trabalho

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top