Mabilis at simpleng: Maglaan ng isang Web Site Paggamit ng SharePoint Bagay Model Sa C #

I tried searching for a little snippet code that would show how I can create a new SPWeb in a site collection. I didn’t find it as quickly or easily as I expected so I thought I’d slap together a little entry on the subject.

Ang code na ito ay lumilikha ng isang bagong site Wiki:

 SPSite siteCollection;

    siteCollection = bago SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy Title",
        "xyzzy description", 1033, SPWebTemplate.WebTemplateWIKI, hindi totoo, hindi totoo);

My initial searches failed because I was looking for phrases like "provision a web site using sharepoint object model" and the like.

Kung ikaw hanapin for "Webs.Add()", makakahanap ka ng isang bilang ng mga napaka-kapaki-pakinabang na mga entry sa blog, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend sa site na ito.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Isama SharePoint Designer daloy ng trabaho sa Mga Serbisyo sa Web

Ako naglalaro sa paligid na may pasadyang mga aksyon para sa SharePoint Designer para sa ilang mga oras (makikita dito para sa ilang mga detalyadong mga bagay-bagay, kung na interes sa iyo).

Sa aking kasalukuyang proyekto, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

Long kuwento maikli, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.

Narito ang lagda:

 publiko pisi Despatsador(
        GUID WebID, // Nakapasa ng runtime kapaligiran
        GUID SiteID, // Nakapasa ng runtime kapaligiran
        pisi ListID, // Nakapasa sa pamamagitan ng mga RTE (hindi alam kung bakit ito ay isang string, hindi isang GUID)
        int ListItemID, // Nakapasa sa pamamagitan ng mga RTE.
        pisi XmlMessage) // Nakapasa sa pamamagitan ng mga gumagamit na ito bilang ipinahayag sa SPD.

Pinakikinabangan nito ang katunayan na maaari naming makakuha ng sa mahalagang impormasyon workflow, tulad ng mga site, ID listahan, at iba pa. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!

Sadly, ito ay malinaw naman ang isang one-way na tiket pababa sa "Loosey Goosey" anti-pattern lupa, ngunit ito ay mas mahusay kaysa sa paghagupit ng isang pader ng ladrilyo 🙂

Ito ba ay isang anti-pattern kung gagawin mo ito kahit na alam mo ito ay isang anti-pattern?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, akong bigyan sundutin (email o mag-iwan ng komento) at mas magiging masigasig ako sa paggawa nito

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags: ,

Linggo ng nakakatawang: “Siguro kung ang iyong password ay …”

Ako kamakailan binili tanghalian para sa aking kapatid na lalaki (gaya ng dati) and we ended up talking about funny things that we did at our respective colleges. At my alma mater, Lafayette College, the academic support IT department had a very inclusive way about it. We were given a LOT of rope and I took advantage of that at times.

Dalawang ng aking mga paboritong mga alaala nauugnay sa aking mabuting kaibigan, Gabe. He had made the terrible mistake of telling people his freshman year that "I’m a freshman, ngunit mayroon akong sopomor standing" dahil sa ang iba't-ibang mga advanced na mga klase sa placement siya ay kinuha, at iba pa. Many of us were similarly situated but we didn’t talk about it so much. His senior year, kapag ipinakilala namin siya sa mga tao, we’d say "This is Gabe. He’s a Senior, but he has Sophomore standing".

The college had some Sun workstation/servers running X-Window. They had gigantic monitors and the engineers used them for CAD and other boring engineer stuff. We CS people used them to learn programming and, mangyari pa, upang i-play mga laro.

Kami ay hindi tulad ng mga computer na walang magawa-inhinyero upang magkano kaya isa sa aming mga paboritong mga bagay-bagay na gawin ay magiging sa telnet sa kahon sila ay sa at magpatakbo ng X-mata on them. This would pop up a pair of eyes that followed the mouse around on the screen. You could pop up even more and have literally a dozen or more of the X-eye applications running. Subukang huwag tumawa nang malakas kapag sinusubukan ng isang kaawa-awang engineer na isara ang X-eye pagkatapos ng X-eye at bumubulong-bulong tungkol dito 🙂

We also played X-trek on those boxes. Upang gawin iyon, nagkaroon ka ng upang i-download ang source, get various dependencies wherever you could find them and build it. I wasn’t a sophisticated C programmer, but I could read header files. I was looking through these and found directives like "#DEFINE MAX_TORPEDO_DISTANCE 10". I played around with that increase range and power for phases and torpedoes, muling itinayo ito at pagkatapos ay nawasak Gabe sa susunod na namin ang naglaro.

Gabe ay din ng isang malaking fan ng isang palabas sa TV na tinatawag na Blake ni 7. I had never seen it, ngunit iyon ay hindi maiwasan ang akin mula sa insisting na Dr. Who is the superior show. Ang mga pagtatalo ay mag-iinit minsan 🙂

Minsan, it occurred to me that I could probably guess his UNIX password. I sat down next to him one day and announced in a loud tone, "I’m going to guess your password right now, Gabe." "Yeah, karapatan" was his answer. I then logged in, ipinasok ang kanyang user id, naka upang harapin sa kanya, nai-type at sinabi nang malakas, "I wonder if it’s B-L-A-K-E-7" ? Touch typing has never paid off as handsomely as it did that day.

Sa susunod na linggo (o sa lalong madaling panahon): More computer room antics from college.

Mayroon ba kayong anumang upang ibahagi? Leave a comment or email me and I’ll publish them here.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Minor Anunsyo ng Pampublikong: Windows Live Mga Setting ng Seguridad at Pakikipag-ugnay sa May-ari ng Space

I receive a handful of messages from individuals via the built-in "send a message" function na ang Microsoft ay nagbibigay ng live na may mga puwang (saan Nagho-host din ang aking blog) bawat buwan.

Tungkol sa isang-katlo ng mga oras, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</dulo>

Simple Paliwanag: “Halaga ay hindi mahulog sa loob ng inaasahang saklaw.”

I-UPDATE: An anonymous poster left a great comment about internal names. Be sure to read it.

Kapag nagtatrabaho sa receiver kaganapan at iba pang code na sumasangguni sa SharePoint listahan ng mga item sa pamamagitan ng bagay na modelo, Ako madalas gumawa ng mga pagkakamali na bumubuo ng mga error na ito sa runtime:

Error sa paglo-load at tumatakbo kaganapan receiver Conchango.xyzzyEventReceiver sa xyzzy, Bersyon = 1.0.0.0, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Additional information is below. : Value does not fall within the expected range.

I think this is a fairly generic error that is potentially caused many different ways. Gayunman, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", Dapat ko bang isangguni ito tulad ng ito sa isang receiver kaganapan:

properties.ListItem["Due Date"]

Kapag ako bumaybay nang pamali o gamitin sa maling kaso kapag tumutukoy sa mga patlang, SharePoint generates the above mentioned runtime error. Halimbawa, ito ang mali:

properties.ListItem["due Date"]

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

End User Quick Tip: Pagbukud-bukurin Pananaw sa isang Library Dokumento, Listahan, at iba pa.

Makakaya namin, dapat at huwag lumikha ng maraming mga tanawin sa SharePoint listahan (dokumento aklatan, custom na mga listahan, at iba pa). SharePoint always lists available views in alphabetical order. We cannot change this using out of the box functionality. If it can be done via customization (at hindi ako sigurado kaya nito), ito ay malayo sa mga teknikal na para sa iyong mga tipikal na end user.

Kung nais mong kontrolin ang pagkakasunod-sunod na kung saan ay naglilista SharePoint magagamit tanawin, lamang prepend isang numero o letra ng pangalan pagtingin, tulad ng sa:

1 – Sa pamamagitan ng Material Uri
2 – Lahat ng mga Dokumento
3 – Takdang Petsa

-o-

Ang isang – Sa pamamagitan ng Material Uri
B – Lahat ng mga Dokumento
C – Takdang Petsa

I have also created views whose purpose is strictly to feed a KPI. I have been following this naming convention:

Z_KPI_[paglalarawan]

That causes my "KPI" mga tanawin na lalabas sa ibaba ng listahan.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags: ,

Linggo ng nakakatawang: “Kapag ako Was isang Little Boy”

Bilang isang magulang, somewhere along the line I discovered the "When I was a little boy" trick.

Ang aking anak na lalaki, marahil apat o limang sa oras, ay naglalaro ng isang lobo at tulad ng karamihan sa maliliit na mga lalaki na maglaro na may mga lobo, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, Ako ay nagkaroon ng isang lobo at pop ito at malaon, I got a new balloon." It seemed to help him cope with his loss and led to a fun talk about what it was like when I was a little boy.

That worked well as a consolation technique and I used it a several times over the next period of time. I did get into trouble once when his Monster Rancher 3 creature died. I talked about how my dog, Prinsipe, had died in a car accident. Oras na ito, ang kanyang tugon ay, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" pamamaraan para sa pag-aliw matapos na.

Bago sa patay insidente aso, gayunman, I had also started to use the technique to convince him to do chores. "When I was a little boy, I had to go out and get the newspaper", "clean my room", "get Mommy her coffee cup", at iba pa.

Ito ay masyadong medyo matagumpay para sa isang habang, but he started to increasingly rebel against the tyranny of my childhood. One event, lalo na, marked the end. I told him to bring the garbage cans from curb back to the garage. He argued and I responded, "When I was a little boy, I had to take the garbage back to the garage." He responded, "Oh yeah! Well when you were a little boy, na noon ay bobo!".

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Pananaw at Mga Hanay sa Mga Listahan ng Dokumento at Mga Aklatan Hindi Ma-secure

I-UPDATE (02/29/08): Ang bagong proyekto codeplex tila na magbigay ng isang pamamaraan para sa pag-secure ng mga indibidwal na mga haligi: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, mangyaring mag-iwan ng komento.

Forum ng poster madalas magtanong ganito: "I have a manager view and and a staff view of a list. How do I secure the manager view so that staff can not use it?"

Sila din ang mga madalas itanong sa isang kaugnay na katanungan: "I want to secure a specific metadata column so that only managers may edit that column while others may not even see it."

These answers apply to both WSS 3.0 at Moss:

  • SharePoint ay hindi nagbibigay ng mga out-of-the-box na suporta para sa pag-secure ng mga tanawin.
  • SharePoint ay hindi nagbibigay ng mga out-of-the-box na suporta para sa mga haligi ng seguridad.

There are several techniques one can follow to meet these kinds of security requirements. Here’s what I can think of:

  • Use out-of-the-box item level security. Views always honor item level security configuration. Event receivers and/or workflow can automate security assignment.
  • Use personal views for "privileged" mga tanawin. These are easy enough to set up. Gayunman, due to their "personal" kalikasan, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • Gumamit ng view ng data na bahagi ng web at ipatupad ang ilang mga uri ng AJAXy solusyon seguridad pinaggupitan.
  • Roll ang iyong sariling listahan display andar at isama ang seguridad pagbabawas sa antas ng haligi.
  • Baguhin ang anyo ng data entry at gamitin JavaScript sa pagsama ng mga modelo ng seguridad na ipapatupad haligi sa antas ng seguridad pinaggupitan.
  • Use an InfoPath form for data entry. Implement column-level security trimming via web service calls to SharePoint and conditionally hide fields as needed.
  • Roll ang iyong sariling ASP.NET data entry function na ipinapatupad ng haligi antas ng seguridad pinaggupitan.

Wala sa mga pagpipilian ay talagang mahusay na, ngunit mayroong hindi bababa sa isang landas sa sundin kung kailangan mong, kahit na mahirap.

Tandaan: Kung kang pumunta down na ng anuman sa mga path, don’t forget about "Actions -> Open with Windows Explorer". You want to be sure that you test with that feature to make sure that it doesn’t work as a "back door" at talunin ang iyong seguridad scheme.

Kung mayroon kang iba pang mga ideya para sa o mga karanasan sa pag-secure ng mga haligi o tanawin, pakiusap email sa akin o mag-iwan ng komento at kukunin ko na i-update ito sa pag-post bilang naaangkop.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Quick Tip: BDC ADF Bersyon Numero Sigurado Ang iyong Kaibigan

Kung ikaw ay hand-coding file ADF at paggawa ng maraming code / import / test cycle, use the version number to make your life easier.

Galit kong umamin ito, pero hanggang sa linggong ito, I was always deleting the ADF and re-importing it. This would break my business data columns and make me re-wire them. All unnecessary.

File this under "it’s obvious once you see it".

Halimbawa:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Uri="WebService" Salin="1.2.0.0" Pangalan="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

Baguhin ang bersyon na iyon at muling pag-import at ang umiiral na hanay ng negosyo ay gumagamit ng data sa na-update na bersyon awtomatikong na walang karagdagang configuration na kinakailangan.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Solusyon: BDC Picker Ipinapakita lamang One Haligi Ng Mga Resulta

Sa aking on-pagpunta pagtatangka sa pagbibigay ng higit pang mga kapaki-pakinabang na lookup gamit ang haligi BDC, I hit a wall with the BDC picker. If you haven’t see it, the BDC picker is similar to a people picker except that it works with columns of type "business data".

Mong ma-access ang picker sa pamamagitan ng pag-click sa icon na open book ng isang hanay ng data ng negosyo tulad ng ipinapakita:

imahen

The above image shows a business data column called "Master Document Id". That column is connected, sa pamamagitan ng BDC, to a web service. The web service returns two columns of information: Document ID and Title. The business purpose here is to provide a "this document is based on" tungkulin. Users select a "master" dokumento at kapag sila ay i-save ang, isang kaganapan receiver kopya meta data mula sa mga patlang ang reference master.

Sa pamamagitan ng default, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

Iyon ay kapaki-pakinabang, but not good enough. People don’t think in terms of IDs, they think in terms of titles and/or other meta data. The picker allows you to search on other columns (e.g. Pamagat) ngunit hindi ipapakita ang aktwal na listahan ng mga pamagat na ito natagpuan, lamang DocId kanilang ay tulad ng ipinapakita dito:

clip_image002[1]

(Ang screen shot ay hindi kaya mahusay na ito dahil hindi ko na lang ng paghahanap na nagbabalik ng anumang wastong mga resulta, ngunit maaari mong makita na kung ito ay natagpuan ng ilang mga resulta, Gusto ito lamang ang nagpakita sa DocId ni, Hindi pamagat).

I searched high and low for the answer to this and failed. Ang aking kasamahan, ang mga karapat-dapat sambahin Jonathan Bradshaw, had faced and solved this issue. When I reached out to him for help, siya tulis sa akin sa tamang direksyon.

Configure the picker to show multiple columns via the "ShowInPicker" ari-arian sa ADF:

<Ari-arian Pangalan="ShowInPicker" Uri="System.Boolean">totoo</Ari-arian>

Sa higit pang mga detalye:

  <!-- Pamagat -->
  <TypeDescriptor TypeName="System.String" Pangalan="Pamagat" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Pamagat</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Katangian>
      <Ari-arian Pangalan="DisplayByDefault" Uri="System.Boolean">totoo</Ari-arian>
      <Ari-arian Pangalan="ShowInPicker" Uri="System.Boolean">totoo</Ari-arian>
    </Katangian>
  </TypeDescriptor>

Setting this property does introduce a minor problem. As soon as you set it once, you need to set it for every column you want to show. Sa aking kaso, BDC picker showed DocId by default. Gayunman, once I added "ShowInPicker" sa Pamagat, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Narito ang resulta ng:

imahen

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. In short, ito ay isang concatenated string na nagbibigay-daan para sa isang bahagyang mas mahusay na karanasan ng gumagamit).

Talaga, pagkakaroon ng nakasulat na ito blog entry, I just did a search for "ShowInPicker" at nakitang maraming mga hit, kabilang ang isang ito: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</dulo>

Mag-subscribe sa aking blog!

Technorati Tags: