Напишав статија за SharePointBriefing.com and they put it up live today.
Тука е закачка:
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Напишав статија за SharePointBriefing.com and they put it up live today.
Тука е закачка:
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
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 (кои се само XML датотеки, па тоа е всушност сосема лесно).
Додека бев градење на проектот, I started by downloading an InfoPath form and saving it to my local hard drive. My c# code was reading directly from that instance. Сепак, 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. Сепак, there’s no need to go through those hoops as you can read it directly from the library. This little snippet shows how:
/// Класа дефиниција работи тука, вклучувајќи:
приватни Spfile mySharePointFile; /* Дел од SPList */ // Повеќе код оди овде и во внатрешноста на метод на класата имаме: textReader = нови XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.Никој; textReader.Read(); // Ако јазол има вредност додека (textReader.Read()) { |
Тие клучни малку погоре е дека ние може да го прочитате InfoPath директно преку OpenBinaryStream() method call on the SPFile as a parameter to the constructor on XmlTextReader. It works great.
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
I have an expense entry solution for a client that leverages InfoPath and workflow. At one point during the approval process, Јас мора да се генерираат е-маил дека има сето тоа добро InfoPath податоци, како и додатоци самите, така што (воздишка) некој може да се земе дека податоците и рачно да ре-клуч го во Oracle база на податоци апликација.
It’s not very difficult to get at or parse the InfoPath form. I didn’t know how to handle the attachments, сепак. After an hour or two of poking around the Internets (цела вечност!) Го најдов овој член: http://support.microsoft.com/kb/892730
It provide some handy code to extract the attachment from a node in the form. (Се уште треба да се најде на јазол и сето тоа, но тоа е само парсирање).
Знам дека прилогот е base64-кодирани и јас првично изодев патот на само вадење на на base64 податоци, decoding it and saving it. Сепак, Јас брзо сфатија не знаев како да го добиете името на датотеката себе додека не го најдов горенаведениот член.
Јас всушност откриле дека доста рано, но јас бев стави надвор од својата расцеп на личноста. Од една страна, the article *says* it’s good for InfoPath 2007. Сепак,, кодот и инструкции се сите за Visual Studio 2003 и референци на InfoPath 2003.
Крајна линија, на кодот кој член се предвидени работи добро за мене (досега). I can get my InfoPath form, Можам да го анализирам, I can find and decode the attachment and I know its name. What more can one ask of one’s life?
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Ако сте загрижени дека вашиот SharePoint животната средина може да биде тад нездраво, дозволете ми да ви помогне да утврдат дека со здравствен преглед.
Имам сметка на процесот за одобрување дека јас треба да се спроведе со користење InfoPath во форми засновани автентикација (FBA) животната средина со користење форми услуги (веб-базирани InfoPath).
Постојат два одобрување групи и Процесот функционира како ова:
На InfoPath страна на нештата, Јас имам различни секции кои ги кријат / појавуваат базира на тоа дали на корисникот е член на една од оние одобрување групи.
Во средина FBA корисничкото име() функција секогаш се враќа празен, за жал. What I’ve done is set up a a custom list called “Approval Groups”.
Јас не додава дополнителни колони на листата.
Кога форма отвора, има правило вака:
На "постави вредност поле" е тука:
Ова е во основа велејќи: Анализирање на одобрување група обичај листа и филтер дека барањето од страна барате било ред каде вредност Наслов на = "Северна".
Ако тоа се враќа било која вредност, 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, ако сегашниот корисник нема соодветни безбедносни пристап до таа точка, тогаш го бараш нема да го врати, 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.
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Бев работи на InfPath форма денес и се стрча против еден стар пријател, "Појави исклучок при прикажување на форма System.Xml.XmlException: Неочекуван крај на датотеката при парсирањето на Име случиле. "
This happened to me a long time ago and I don’t know what exactly I did to resolve it. Honestly, Мислам дека сум бил транзиција кон новиот проект и никогаш не го виде тоа една решено (мојата замена мораше да се справи со тоа главоболка). I do remember it was a devil of a problem. I spent several unsuccessful days dealing with it. Since then, Сум го видел ова излезе на MSDN форуми најмалку еднаш во текот на минатата година и никогаш не видов одговор за тоа.
Јас го погоди денес и за среќа овој пат , 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.
Во мојот случај, проблемот бил предизвикан од овие чекори:
Јас не знам дали тие чекори да предизвика проблем или можеби, некако на податоците во листата по себе е проблем. I’m going to experiment a bit and see if I can nail downt he parameters of this with any more detail.
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Јас сум уште живеат во InfoPath формуларите светот, а јас се потребни за да се направи една од оние "мали" промени на форма која, за жал,, breaks a naming convention I adopted with it two weeks ago. Јас помислив, "Некој се случува да се погледне во оваа работа една година од сега и да каже, "Она што беше Пол размислување? By Jove, неговото именување конвенција не прави никаква смисла!"
Сфатив дека би можеле да создаваат поглед на формата за ова, а потоа, уште еднаш, realized that I could have been doing something like this all along. I added a “Developer Notes” view to the InfoPath form as such:
Сум конфигуриран форма така што корисниците не можат да стигнат до тој став и затоа, 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!
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Јас се чини да поминат низ InfoPath фази, каде, од ведро небо, 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.
Јас сум во средината на InfoPath фаза и јас сум создавање на InfoPath формуларите со многу пати. Едно нешто што најверојатно забележите е дека 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, како што е илустрирано овде:
I wish I had been doing this all along.
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Сум бил работи на некои InfoPath формуларите оваа недела во Мос во средина FBA и научил, кога отидов да се распореди на форми на производство на животната средина со зона FBA дека корисничко име() function function does not work. I was using it to generate unique file names.
И, that function doesn’t work in an FBA environment (најмалку, not out of the box). И, upon reflection, using username in the way I had planned wouldn’t have guaranteed a unique file name in any event.
My solution was to use the now() function and a rule that fires on loading of the form. I assign the file name to data element when it’s blank:
The advantage of this approach is that the file name is set only once. (I don’t show it in the screen shot, but put a condition on the rule to only fire when “myFilename” is blank). I used to set the file name at the data source level. Typically, I would do something (лоша) вака:
The problem with that is that if user A opens the form on Monday and the user B changes it on Tuesday, you’ll end up with two different forms since two different users saved it with different user names.
Така, as annoying as FBA can be in general and with InfoPath in particular, it made me re-think a small but really important technical detail and approach that I wouldn’t have done otherwise!
</крајот>
Да се претплатите на мојот блог.
Следете ме на Twitter во http://www.twitter.com/pagalvin
Има еден заеднички бизнис сценарио како ова:
Овој пример office.microsoft.com describes how to create a separate "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. Со текот на времето, со различни програмери, there can be some divergence.
Оваа алтернатива би можеле да работат подобро во некои случаи:
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, можеби во големи црвени букви склопот на врвот на страната.
Во еден проект, I created a "workflow status" видите. As the workflow progressed, it would update specific status fields that had been promoted from the form. When the user opened the form, the "open form" владее автоматски префрла кон тој став и корисникот имаше убаво малку резиме статусот.
</крајот>
Ние имавме развиено InfoPath формулар со повеќе пати да ја поддржи новиот вработен / on-boarding process. When the company hires a new person, Секторот за ИТ и други групи треба да преземат акција (постави платен список, овозможи пристап до соодветни апликации, лоцирање на маса, итн). We use on form but a different view of the form for each of those functions.
Во оваа фирма, повеќето од луѓето вклучени во бизнисот процес се ИТ-чувство, па кога тие пристапите на форма, their default view is a "menu" view with buttons that direct them to their specific function. Сепак, we needed to simplify things for the new hire’s direct manager. This person should not see any of the IT related stuff. Всушност, таа треба да се види само еден поглед на формата, а не дури и да има опција да се види другата пати.
Во нашиот случај, таа сметка директен менаџер е директно поврзана со форма учтивост на контактирајте селектор (which I am always wanting to call a "people picker" поради некоја причина).
Чекорите се како што следува:
1. Во дизајнот на владата, одете на Tools -> Форма Опции -> Отворете и Save.
2. Select "rules".
3. Create a new rule whose action is "switch to view" и чија состојба Нотингем корисничкото име() функција.
корисничко име() returns the "simple" user name without the domain. If I log into SharePoint with credentials "domain\pagalvin", корисничко име() 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 (во мојата средина во секој случај) враќа на доменот и кориснички ID, as in "domain\pagalvin". This prevents us from doing a straight-forward equality condition since AccountID ("domain\pagalvin") никогаш не ќе се изедначи корисничко име() ("pagalvin").
We can get around this using the "contains" оператор: AccountID содржи корисничко име().
Ние може да потрае понатаму и пред-Pend хард-кодирани домен во предниот дел на корисничко име() функција да добие нашата еднаквост провери и да ги елиминираат ризикот од лажно позитивни на содржи операторот.
We would have REALLY like to automatically switch view for other users based on their AD security group membership. На пример, when a member of the "IT Analytics" група пристапи форма, 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", Поминете го корисничкото име() and return back true or false. Does anyone have any other, повеќе умна идеја? Is there any SharePoint function we can leverage from InfoPath to make that determination?
</крајот>