Mga Archive ng kategorya: InfoPath 2007 // Forms Server

Quick Hit: Binabasa ang InfoPath XML Direkta Mula sa isang SPListItem sa SharePoint

I’m been working on a project where I need to extract attachments from an InfoPath form. There are some good resources for parsing InfoPath forms (na lamang ang XML file, kaya talagang medyo madali).

Habang ako ay pagbuo up ang proyekto, I started by downloading an InfoPath form and saving it to my local hard drive. My c# code was reading directly from that instance. Gayunman, the InfoPath forms are really living inside a SharePoint forms library. I did a little half hearted searching to find out how to read it directly from the library and almost gave up, in which case I would have saved the form to a local temp directory and read it from there. Gayunman, there’s no need to go through those hoops as you can read it directly from the library. This little snippet shows how:

/// Class kahulugan bagay-bagay dito, kasama:
pribado SPFile mySharePointFile; /* Bahagi ng isang SPList */
// Higit pang code dito napupunta at sa loob ng isang pamamaraan ng klase mayroon kami:
XmlTextReader textReader;
textReader = bago XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Wala;

textReader.Read();

// Kung ang node ay may halaga

habang (textReader.Read())
{

… and so on and so forth …

Sila key bit sa itaas ay na maaari naming basahin ang InfoPath nang direkta sa pamamagitan ng OpenBinaryStream() method call on the SPFile as a parameter to the constructor on XmlTextReader. It works great.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

Programming Extracting Attachment Mula Forms InfoPath (Kabilang ang kanilang Pangalan!)

I have an expense entry solution for a client that leverages InfoPath and workflow. At one point during the approval process, Kailangan ko upang bumuo ng isang email na may lahat ng mga mahusay na data InfoPath pati na rin ang kalakip ang kanilang mga sarili upang (buntong-hininga) isang tao ay maaaring tumagal ng data na iyon at manu-manong muling key ito sa isang application Oracle database.

It’s not very difficult to get at or parse the InfoPath form. I didn’t know how to handle the attachments, gayunman. After an hour or two of poking around the Internets (isang kawalang-hanggan!) Nakita ko ang artikulong ito: http://support.microsoft.com/kb/892730

It provide some handy code to extract the attachment from a node in the form. (Kailangan mo pa rin mahanap ang node at ang lahat na, ngunit ito lamang ay parse ng XML).

Alam ko na ang attachment ay base64-encode at ako nagpunta ang orihinal pababa sa landas ng extracting lamang ang mga base64 data, decoding it and saving it. Gayunman, Ako mabilis na natanto Hindi ko alam kung paano makuha ang pangalan ng file mismo hanggang sa nakita ko ang nabanggit na artikulo.

Talagang ako ay natagpuan na masyadong maaga, ngunit ako ay ilagay off sa pamamagitan ng split pagkatao. Sa isang banda, the article *says* it’s good for InfoPath 2007. Pa, ang code at mga tagubilin ay ang lahat ng tungkol sa Visual Studio 2003 at mga sanggunian sa InfoPath 2003.

Ika-line, ang code na ibinigay artikulo ay mahusay na gumagana para sa akin (hanggang ngayon). I can get my InfoPath form, Maaari ko bang i-parse ito, I can find and decode the attachment and I know its name. What more can one ask of one’s life?

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags: ,,

Kung ikaw ay nag-aalala na ang iyong SharePoint kapaligiran ay maaaring maging isang tad masama sa katawan, hayaan mo akong makatulong sa iyo na ayusin may isang kalusugan tseke.

Pamamahala ng Pag-apruba Groups may InfoPath sa isang Kapaligiran FBA

Mayroon akong isang gastos proseso ng pag-apruba na kailangan ko upang ipatupad ang paggamit InfoPath sa isang paraan batay pagpapatunay (FBA) kapaligiran gamit ang mga serbisyo ng mga form (web based InfoPath).

Mayroong dalawang mga grupo ng pag-apruba at ang proseso ay gumagana tulad nito:

  • User punan ang isang gastos ulat at isinusumite ito para sa pag-apruba.
  • Na nagpapalitaw ng isang email sa unang antas ng grupo Approver.
  • Unang antas Approver sumusuri at aprubahan o denies ang mga ulat.
  • Kung unang antas taong ito naaprubahan, sistema-aabiso sa ikalawang antas Approver.

Sa InfoPath bahagi ng mga bagay, Mayroon akong iba't ibang mga seksyon na itago / Lilitaw na batay sa kung ang gumagamit ay isang miyembro ng isa sa mga pangkat na iyon pag-apruba.

Sa isang kapaligiran FBA ang username() function na laging nagbabalik blangko, sadly. What I’ve done is set up a a custom list called “Approval Groups”.

Hindi ko magdagdag ng anumang karagdagang mga haligi sa listahan.

Kapag ang form na bubukas up, ito ay isang panuntunan na tulad nito:

image

Ang "magtakda ng isang halaga na field ng" ay dito:

image

Ito ay isa lamang sinasabi: Query ang pag-apruba ng pangkat pasadyang listahan at i-filter sa query na iyon sa pamamagitan ng pagtingin para sa anumang hilera kung saan Pamagat ng halaga = "Nordic".

Kung na nagbabalik ng anumang halaga, then the current user is a member of that group. I know it contains that value because the string length is greater than zero.

Close the loop by securing the individual items in the Approval Group list. At run-time, kung ang kasalukuyang user ay walang naaangkop na seguridad ng access sa item na iyon at pagkatapos ay ang query ay hindi ibalik ito, string-length will be zero and now you know the current user is not part of that group. You can use that fact as needed in the form.

This is a super brief write-up. I’m pressed for time or I’d provide more detail.

I don’t know how relevant it is that I’m in an FBA environment. This would probably work well in a non-FBA environment but I can imagine cases where this would be useful.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags: ,

InfoPath // Isang Paliwanag para sa "Unhandled exception kapag nagre-render na form System.Xml.XmlException: Hindi inaasahang pagtatapos ng file habang pina-parse Pangalan na naganap. "

Ako ay nagtatrabaho sa isang InfPath form na ngayon at nagpatakbo up laban sa isang lumang kaibigan, "Unhandled exception kapag nagre-render na form System.Xml.XmlException: Hindi inaasahang pagtatapos ng file habang pina-parse Pangalan na naganap. "

This happened to me a long time ago and I don’t know what exactly I did to resolve it. Honestly, Sa tingin ko na ako ay inililipat sa isang bagong proyekto at hindi kailanman nakita ang isang ito nalutas (ang aking mga pamalit nagkaroon haharapin ang mga na sakit ng ulo). I do remember it was a devil of a problem. I spent several unsuccessful days dealing with it. Since then, Nakita ko na ito lumapit sa MSDN forums ng hindi bababa sa isang beses sa nakaraang taon at hindi kailanman talagang nakita ng sagot para dito.

Ako pindutin ito ngayon at sa kabutihang-palad oras na ito , I had just made a change to the form. I backed out that change and the problem went away. It turns out that it’s possible to create a from template using InfoPath Designer in such a way that it generates a parse error on the forms server side of the fence.

Sa aking kaso, ang problema ay ang sanhi sa pamamagitan ng mga hakbang na ito:

  1. Magdagdag ng isang bagong elemento sa isang pinagmumulan ng data bilang isang patlang ng teksto.
  2. I-drop ito papunta sa form na.
  3. Baguhin ito sa display sa isang drop down na listahan.
  4. Sabihin sa drop down na listahan upang hilahin ang mga halaga nito mula sa isang listahan ng SharePoint custom.

Hindi ko alam kung ang mga hakbang na ito sanhi ng isang problema o siguro, sa paano pa man ang data sa listahan mismo ay isang problema. I’m going to experiment a bit and see if I can nail downt he parameters of this with any more detail.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

I-embed ang Mga Tala Developer Inside Ang iyong InfoPath Form

Pa rin ako nakatira sa InfoPath Form mundo at ako na kailangan upang gumawa ng isa sa mga "maliliit" na pagbabago sa isang form na, sa kasamaang-palad, breaks a naming convention I adopted with it two weeks ago. Akala ko sa sarili ko, "Isang tao ay pagpunta upang tumingin sa bagay na ito sa isang taon mula ngayon at sabihin, 'Ano ang iniisip Paul? By Jove, kanyang pagpapangalan convention ginagawang walang kahulugan!"

Napagtanto ko na maaaring ako lilikha ng isang pagtingin sa form na ito para sa at pagkatapos ay, minsan pa, realized that I could have been doing something like this all along. I added a “Developer Notes” view to the InfoPath form as such:

image

I-configure ang form sa gayon na ang mga gumagamit ay hindi maaaring makakuha ng sa view na iyon at samakatuwid, it’s only visible with the InfoPath client in design view. Now I feel a little inoculated against some future unknown developer looking at my form and thinking bad thoughts about me. Phew!

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

Pamamahala Views InfoPath

Mukhang ako na dumaan sa phase kung saan InfoPath, sa labas ng asul, I’m crafting a bunch of forms. My fingers learn how to use the tool well and then I go through nine month drought and have to learn it all over again.

Ako ay sa gitna ng isang phase InfoPath at Lumilikha ako ng mga form InfoPath na may maraming mga tanawin. Ang isang bagay na ikaw marahil ay mapapansin na ang InfoPath 2007 client shows views in alphabetical order. This is a real nuisance some times. My best technique these days is to prepend a number to the view name so that they always show in the order I want, bilang isinalarawan dito:

image

I wish I had been doing this all along.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath Form Sevices, Forms Based Authentication (FBA) at Natatanging Mga Pangalan ng File

Ako pinagsusumikapan ilang InfoPath bumubuo linggo na ito sa Moss sa isang kapaligiran FBA at natutunan, kapag nagpunta ako upang i-deploy ang mga form sa isang kapaligiran sa produksyon na may isang zone FBA na ang username() function function does not work. I was using it to generate unique file names.

Mahusay, na function na ay hindi gumagana sa isang kapaligiran FBA (kahit, Hindi sa labas ng kahon). At, sa pagmuni-muni, gamit ang username sa paraan ako ay binalak hindi sana katiyakan ang isang natatanging pangalan ng file sa anumang kaganapan.

Aking solusyon ay upang gamitin ang mga ngayon() function and a rule that fires on loading of the form. I assign the file name to data element when it’s blank:

image

image

The advantage of this approach is that the file name is set only once. (Hindi ko ipakita ito sa mga screen shot, ngunit maglagay ng isang kondisyon sa panuntunan na lamang ang apoy kapag "myFilename" ay blangko). I used to set the file name at the data source level. Typically, Gusto ko gawin ang isang bagay (masama) ganito:

image

Ang problema sa na ay na kung ang isang user ay bubukas ang form sa Lunes at sa gumagamit B ay nagbabago dito sa Martes, makakapunta ka sa dalawang magkaibang mga form dahil dalawang iba't ibang mga gumagamit-save ito sa ibang mga user name.

Kaya, bilang nakakainis bilang FBA ay maaaring maging sa pangkalahatang at may InfoPath sa partikular na, Gawa ito sa akin muli sa tingin ang isang maliit ngunit talagang mahalaga teknikal na detalye at diskarte na hindi ko nagawa na kung hindi man ay!

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

Mabilis at simpleng: Gumawa ng isang InfoPath Form Read Only (InfoPath mga Forms Serbisyo sa Moss)

Mayroong isang karaniwang sitwasyon ng negosyo tulad nito:

  • User punan ang isang InfoPath form.
  • Nagsumite form na.
  • Long-tumatakbo workflow proseso kicks off.
  • Habang workflow ay tumatakbo, hindi namin gusto ang sinuman na baguhin ang nilalaman ng form.

Ang office.microsoft.com Halimbawa na ito naglalarawan kung paano lumikha ng isang hiwalay na "view" and mark the whole view as read-only. This is a workable approach but has the drawback that you’ve effectively created two entire versions of the same form and must now keep them in sync manually. If you add a field to the editable view, you must then add it to the non-editable view as well. Over time, sa ibang mga developer, there can be some divergence.

Ang alternatibong ito ay maaaring gumana ng mas mahusay sa ilang mga kaso:

  • Magdagdag ng isang bagong patlang sa form na tinatawag na "IsEditable".
  • Itakda ang default na halaga nito sa tunay na.
  • Isulong ito kapag-publish sa Moss.
  • Sa ang daloy ng trabaho, itakda ang halaga ng IsEditble sa maling.
  • Bumalik sa form.
  • Magdagdag ng isang patakaran na "sa bukas ng form", huwag paganahin ang iyong save button kapag IsEditable ay hindi totoo.

The drawback to this approach is that all the fields will still be editable on the screen. The user can get a false impression that they can actually change content. You can mitigate that by putting in some text that the form is disabled, marahil sa malaking pulang titik sa buong tuktok ng pahina.

Sa isang proyekto, Nilikha ko ang isang "workflow katayuan" tingnan. As the workflow progressed, it would update specific status fields that had been promoted from the form. When the user opened the form, ang "bukas na form" Rule awtomatikong lumipat sa na pagtingin at ang gumagamit ay may isang magandang maliit na buod ng katayuan.

</dulo>

Mag-subscribe sa aking blog.

Lumipat Tingnan View Batay sa User ID Sa Isang Form InfoPath

Kami ay binuo ng isang InfoPath form na may maraming mga tanawin upang suportahan ang isang bagong hire / on-boarding process. When the company hires a new person, ang IT department at iba pang mga pangkat kailangang gumawa ng pagkilos (set up ng Payroll, paganahin ang access sa naaangkop na mga application, hanapin lamesa, at iba pa). We use on form but a different view of the form for each of those functions.

Sa kumpanyang ito, karamihan sa mga tao na kasangkot sa proseso ng negosyo ay mga IT-savvy, kaya kapag sila ay ma-access ang form, their default view is a "menu" view with buttons that direct them to their specific function. Gayunman, we needed to simplify things for the new hire’s direct manager. This person should not see any of the IT related stuff. Sa katunayan, dapat siya makita isa lang na view ng ang form at hindi kahit na magkaroon ng isang pagpipilian upang makita ang iba pang mga tanawin.

Sa aming kaso, na direct account manager ay direktang nakatali sa anyo ng kagandahang-loob ng isang makipag-ugnay sa selector (which I am always wanting to call a "people picker" para sa ilang kadahilanan).

Ang hakbang na ito ay ang mga sumusunod:

1. Sa mode na disenyo, pumunta sa Tools -> Form Options -> Buksan at I-save.

2. Select "rules".

3. Create a new rule whose action is "switch to view" at na ang kondisyon Pinakikinabangan ang username() tungkulin.

Username() returns the "simple" user name without the domain. If I log into SharePoint with credentials "domain\pagalvin", Username() returns "pagalvin".

The contact selector provides three bits of information for a contact. The "AccountID" portion is most useful for this scenario. The only thing that makes this even a little bit of challenge is that the contact selector (sa aking kapaligiran pa rin) ay magbabalik ng mga domain at user ID, as in "domain\pagalvin". This prevents us from doing a straight-forward equality condition since AccountID ("domain\pagalvin") hindi kailanman ay magiging katumbas username() ("pagalvin").

We can get around this using the "contains" opereytor: AccountID ay naglalaman ng Username().

Maaari naming dalhin ito sa karagdagang at pre-pend isang hard-code na domain sa harap ng Username() gumana upang makakuha ng aming mga check-pantay at puksain ang panganib ng isang false positive sa ay naglalaman ng operator.

We would have REALLY like to automatically switch view for other users based on their AD security group membership. Halimbawa, when a member of the "IT Analytics" grupo-access ang form, automatically switch to the IT Analytics view. We didn’t have time to implement it, but my first thought is to create a web service that would have a method like "IsMemberOfActiveDirectorySecurityGroup", pumasa ito ang username() and return back true or false. Does anyone have any other, mas matalino ideya? Is there any SharePoint function we can leverage from InfoPath to make that determination?

</dulo>

Technorati Tags: